저는 12GB RAM을 갖춘 시스템에서 OpenBSD/amd64 5.2를 실행하고 있으며 파일 시스템 캐싱을 위해 약 6GB에서 8GB의 메모리를 사용하고 싶습니다.
기본적으로 5.2 amd64 에는 (20%) sysctl kern.bufcachepercent
설정이 있는데 20
50%로 늘렸다가 60%로 늘려서 확실히 전체 크기가 10GB가 넘는 파일을 많이 살펴봤는데 를 입력 top
하면 다음 줄에 도달했습니다.
Memory: Real: 25M/1978M act/tot Free: 9961M Cache: 1670M Swap: 0K/48G
12GB 중 1.7GB로 15%도 안 됩니다! kern.maxvnodes
117091에서 400000으로 늘리려 고 시도했지만 ( kern.numvnodes
400,000개의 가상 노드가 모두 빠르게 활용되는 것으로 나타났습니다), 여전히 캐시용 RAM이 2GB 미만이었습니다.
OpenBSD 5.2 amd64에서 디스크 캐시에 6GB RAM을 사용할 수 없습니까? 약 1.7GB로 제한되나요?
답변1
아니요, 캐시는 1.7GB 정도로 제한되지 않습니다. 컴퓨터에 작은 파일이 많이 있는 것 같습니다. numvnodes가 가득 차면 디스크 캐시에 사용할 수 있는 추가 공간이 없습니다. numvnodes를 더 늘리거나 대용량 파일에서 찾기/검색을 시도해 볼 수 있습니다.
답변2
몇 가지 테스트를 했는데 내 시스템에서 100% 버퍼 캐시에 해당하는 것은 약 2.8GB인 것 같습니다(75%를 시도했고 캐시에 대해 약 2.1GB를 얻었습니다). 따라서 초과 비율은 약 2.7 또는 2.8입니다. GB(시스템/BIOS 등에 따라 달라질 수 있음)
이는 버퍼 캐시가 제한되어 있는 것과 관련이 있는 것 같습니다.32비트 DMA 메모리, 그리고 대부분의 경우 100% 설정에서도 다른 커널 리소스와 공유되는 풀에서 메모리를 가져오므로 비율은 모든 시스템에서 항상 4GB보다 훨씬 낮습니다.
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/kern/vfs_bio.c
http://marc.info/?l=openbsd-tech&m=130174663714841&w=2
답변3
OpenBSD 5.6 또는 5.7부터 OpenBSD의 "버퍼 캐시"(일명 OS 디스크/파일 시스템 RAM 캐시 등)는아니요더 이상 32비트/~3GB 제한이 없습니다. 자세한 내용은 이 ML 게시물 및 스레드를 참조하세요.
http://marc.info/?l=openbsd-misc&m=145542727812528&w=2
http://marc.info/?t=145538710500002&r=1&w=2
따라서 2013년 1월에 다른 포스터에서 이를 제안한 이후 상황이 바뀌었습니다. 이는 실제로 제한이 해제되기 약 6개월 전이었습니다.
나는 numvnodes 설정이 여기에서 논의된 주제에 여전히 영향을 미칠 것이라고 생각합니다. 아직 실제로 조사하지는 않았지만 버퍼 캐시에 대해 이 점을 강조하고 싶었습니다(이 게시물은 전체 인터넷의 몇 안되는 페이지 중 하나이기 때문입니다). OpenBSD 기능에 대해 설명합니다).