문제

파일에 액세스 할 때 다양한 유형의 이벤트를 트리거하기 위해 Inotify를 통해 파일 이벤트를 모니터링하는 데몬 작업을하고 있습니다. 커널은 시청중인 모든 파일의 전체 경로 이름을 저장하고 있기 때문에 시계가 약간 비싸다는 것을 읽었습니다.

얼마나 많은 시계가 너무 많습니까?

편집 : 주로 궁금합니다 .. 만약 그렇다면, 얼마나 많은 시계가 일어 났는지 눈에 띄는 성능을 보인 적이 있습니까? 예, 모니터링 / 재귀가 필요하지만 (최소 부트 스트랩 시스템).

도움이 되었습니까?

해결책

Afaik 커널은 PathName을 저장하지 않고 inode를 저장하지 않습니다. 그럼에도 불구하고 32 비트 시스템에는 시계 당 540 바이트가 있습니다. 64 비트에서 두 배가됩니다.

나는 Lsyncd (아마도 그것을 확인하고 싶습니까?)에서 백만 개의 시계를 가진 사람들을 알고 있습니다. 그것은 단지 기가 바이트의 기억을 먹습니다.

다른 팁

읽기를 통해 시스템 제한을 찾을 수 있습니다 /proc/sys/fs/inotify/max_user_instances (최대 "Onotify"Objects ") 및 /proc/sys/fs/inotify/max_user_watches (시청 한 최대 파일 수), 따라서 해당 숫자를 초과하면 너무 많으면 ;-) 최대 시계 수는 일반적으로 수만 명 이상입니다. 내 시스템에서 262143- 파일 시스템에서 모든 파일을 보려고하지 않는 한 필요하지만 그렇게해서는 안됩니다. 나는 당신이 필요로하는 것보다 더 많은 Inotify 시계를 사용하지 말고, 성능이 크게 감소하지 않는 한 걱정하지 마십시오.

내 정보:

[foo@caffeine ~]# cat /var/log/lsyncd.status | grep Inotify
Inotify watching 293208 directories

[foo@caffeine ~]# cat /proc/sys/fs/inotify/max_user_watches
1048576

LSYNCD는 약 130m의 메모리를 사용합니다.

LSYNCD를 사용하여 일부 디렉토리를 재해 복구 서버와 동기화합니다.

기본 서버에서 성능 히트/페널티가 없습니다.

100 억 조는 1 조 1 천만 가운데가 너무 많을 것입니다. 커널 Korner- Inotify의 소개 “수천 개의 시계”를 언급하므로 적어도 그 숫자는 문제가되지 않아야합니다.

그것은 당신이 얼마나 많은 RAM을 가지고 있는지에 달려 있습니다

524288은 볼 수있는 최대 파일 수이지만, 특히 메모리가 제한되는 환경에 있다면 숫자를 낮추고 싶을 수 있습니다. 각 파일 시계는 540 바이트 (32 비트) 또는 ~ 1KB (64 비트)를 차지하므로 524288 개의 시계가 모두 소비되었다고 가정하면 약 256MB (32 비트) 또는 512MB (64 비트)의 상한이 발생한다고 가정합니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top