free 출력값이 메모리용량과 틀리게 나오는데...
글쓴이: 웃는 남자 / 작성시간: 일, 2005/10/02 - 3:29오전
ASUS TUV4X 보드에 512MB 1개 / 256MB 2개로해서 1024MB 의 메모리를 달았습니다.
바이오스에서는 1024MB 로 메모리용량이 정확하게 인식이 됩니다.
그런데 부팅후 free 출력값이 다음과 같이 나옵니다.
nautilus ~ # free -m total used free shared buffers cached Mem: 884 350 534 0 38 167 -/+ buffers/cache: 144 739 Swap: 488 0 488
total 값이 1024 가 아닌 884 로 나오네요.
사라진 메모리를 어디서 찾을 수 있을까요? :roll:
Forums:
만약 하드웨어 문제가 아니라면, 커널에서 메모리 설정을 다시 만지고 재컴
만약 하드웨어 문제가 아니라면, 커널에서 메모리 설정을 다시 만지고 재컴파일 하시기 바랍니다. 오래되서 기억이 가물가물하지만 아마도 High Memory나 메모리 크기 관련하여 설정을 해야 했던 걸로 기억됩니다.
kernel parameter에 "mem=1024M"를 추가해 보기 바랍
kernel parameter에 "mem=1024M"를 추가해 보기 바랍니다.
고친 후 해야 할 것은,
첫째, 부팅 후 cat /proc/meminfo로 memory가 제대로 잡혔는지 확인.
둘째, 각 장치 (특히 PCI)들이 제대로 동작하는지 검사.
세째, 만약 둘째가 문제가 된다면, /usr/src/linux/Documentation/kernel-parameters.txt를 보고 memmap 등의 파라메터를 사용, 수정할 것.
정도입니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
lowmem 한계가 884메가까지입니다.커널에서 4G highmem
lowmem 한계가 884메가까지입니다.
커널에서 4G highmem 지원 옵션을 켜든지,
혹은 1g lowmem을 지원하는 패치를 하든지 하셔야 합니다.
답글 주신 분들께 감사드립니다. :wink: 문제원인은 역시 커
답글 주신 분들께 감사드립니다. :wink:
문제원인은 역시 커널의 Low Memory 의 최대한계가 884MB 이었던 이유였습니다.
제가 막연히 Low Memory 이라도 4GB 까지는 그대로 지원하는 줄 알았던게 틀렸었네요.
해결책은 커널 설정에서 High Memory Support 옵션을 4GB 로 선택해주고 재컴파일후 부팅하니 정상적으로 작동됩니다.
사라졌던 메모리를 다시 찾게 되어서 좋긴 한데 High Memory Support 옵션을 키면 아무래도 커널의 오버헤드가 발생한다고 합니다. 그래서 lowmem 에서도 1GB 메모리를 지원해주는 커널패치가 있는데 ck-patch , nitro-patch , love-patch 등이 있습니다.
nitro-patch 와 love-patch 는 무척 blood-edge 합니다. ck-patch 를 권유하구요.
젠투에서는 ck-patch 가 적용된 ck-sources 가 포테이지에 있습니다.
참고로 패치되지 않은 커널에서 884 이상의 메모리를 장착하고
커널파라메터에 mem=1024 옵션을 주면 커널이 로딩되면서 얼어버리는 현상이 있습니다.
----------------------------------------
Nothing left after Nirvana.
댓글 달기