파일 시스템 메타데이터 캐시에 대부분의 RAM을 사용하도록 시스템을 설정하고 읽기/쓰기 캐시와 파일 프리페치에는 상당히 적은 양의 RAM만 사용하고 싶습니다. 이상적으로는 실제로 파일을 열 때까지 디스크를 회전시키지 않고도 파일 시스템(RAM에 맞는 한)을 탐색할 수 있기를 원합니다.
세부사항은 다음과 같습니다:
집에서 만든 파일 서버가 있습니다. LVM 볼륨에는 약 9TB 용량의 디스크 5개가 있지만 RAM은 4GB에 불과합니다. 서버는 파일을 제공하는 것 외에는 많은 작업을 수행하지 않으므로 대부분의 RAM이 캐싱에 사용됩니다. ("무료"는 캐싱에 사용되는 3.9G 중 3.4G를 보고합니다.)
서버는 내 침실에 있으며 조용할 때 모든 디스크가 회전하면 짜증날 만큼 충분한 소음을 냅니다. (시크 노이즈가 아니라 회전 노이즈만 말하는 것입니다. 디스크 제조사와 모델이 다르고 회전 속도의 약간의 차이가 간섭을 일으킬 수 있다고 생각합니다. 디스크 자체가 시끄러운 것은 아니지만 일부가 함께 회전하면 발생합니다. 간섭이 발생합니다. 서브헤르츠 주기로 약간의 소음이 발생하므로 대부분의 경우 디스크 속도를 줄이도록 서버를 구성했습니다.
물론 파일 관리자에서 폴더를 열 때 디스크 회전 속도가 느려지면 해당 폴더 회전이 있는 디스크에 관계없이 지연이 발생합니다. 단지 큰 문제가 아니라는 것뿐입니다. 그러나 내가 보는 위치에 따라 LVM이 각 하위 폴더에 대한 메타데이터를 다른 디스크에 배포하는 경우 이러한 현상이 여러 번 연속으로 발생할 수 있습니다.
나는 Linux의 캐시가 대부분 파일 내용, 아마도 미리 가져온 데이터로 채워져 있다고 생각합니다. 몇 MB가 넘는 캐시는 원활한 재생을 보장하는 데 별로 유용하지 않습니다. 영화를 보기만 한다면 아마 곧 다시 보지 않을 것입니다. 프리페칭이 발생하면 전혀 쓸모가 없습니다.나로서는, 몇 MB 이상 후에.
그러나 대부분의 파일 시스템 메타데이터, 최소한 액세스한 부분을 캐시하는 데 4GB이면 충분하므로 디스크를 회전하지 않고도 파일을 검색할 수 있습니다(휴면 상태인 것으로 판명되면).
파일을 열 때 여전히 지연이 발생하지만 괜찮습니다. “클릭;기다리다;딸깍 하는 소리;기다리다;딸깍 하는 소리;기다리다;재생;보기' 대 '클릭;클릭;클릭;재생;기다리다"Watch". 전자는 믿을 수 없을 정도로 실망스럽고 후자는 거의 예상됩니다.
노트:
중요한 경우 커널은 3.2, OS는 Debian, 볼륨은 lvm2, FS는 ext4입니다.
RPM이 떨어지는 유일한 이유는 밤의 소음 때문입니다. 그렇지 않으면 서버가 계속 실행됩니다. (최대한 저전력으로 설정했습니다.) 회전지연은 시간대에 따라 달라집니다.
하드 드라이브는 미디어 전용입니다. 운영 체제는 별도의 (소형) 플래시 드라이브에 있습니다. (즉, 시작 지연은 데이터에 필요한 것이 아니라 데이터에서 비롯된다는 의미입니다
/usr
. 어떤 방식으로든 문제를 해결하는 데 도움이 된다면 몇 GB를 확보할 수 있습니다.성능에 대한 합리적인 영향은 그다지 큰 문제가 되지 않습니다. 어쨌든 디스크가 내 네트워크보다 빠릅니다.
답변1
Linux가 캐시하는 방법을 제어하려면 다음을 참조하세요. https://www.kernel.org/doc/Documentation/sysctl/vm.txt
특히 vfs_cache_Pressure를 보면 매우 낮은 값, 심지어 0일 수도 있습니다(1이 더 안전한 것 같습니다).
vfs_cache_pressure
------------------
Controls the tendency of the kernel to reclaim the memory which is used for
caching of directory and inode objects.
At the default value of vfs_cache_pressure=100 the kernel will attempt to
reclaim dentries and inodes at a "fair" rate with respect to pagecache and
swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer
to retain dentry and inode caches. When vfs_cache_pressure=0, the kernel will
never reclaim dentries and inodes due to memory pressure and this can easily
lead to out-of-memory conditions. Increasing vfs_cache_pressure beyond 100
causes the kernel to prefer to reclaim dentries and inodes.
swappiness
또한 데이터가 절대 교환되지 않도록 또는 극단적인 경우에만 발생하도록 수정해야 할 수도 있습니다 .
이 drop_caches
옵션은 더 이상 캐시하지 않으려는 데이터를 명시적으로 삭제하는 데 편리할 수 있습니다.
도움이 될 수 있는 다른 옵션이 있을 것이라고 확신하므로 커널 문서를 확인하세요.
/etc/sysctl.conf
이를 적용하기 위해 변경하려는 설정 이나 부팅 시 운영 체제에서 복원하는 데 필요한 모든 항목을 입력합니다 .