Quantcast
Channel: 우분투 한국 커뮤니티
Viewing all articles
Browse latest Browse all 4577

Re: 기본메모리가 8GB보다 적은데?

$
0
0
Author: ihavnoth
Forum: 설치/부팅 관련
Date: 2014-08-14

http://unix.stackexchange.com/questions ... -installed

위 URL과 아래를 참고 하세요

간단하게 제 리눅스 PC의 메모리를 확인해 보겠습니다.

아래 과정을 기초 지식으로 해서 원하는 답을 얻으시길 바랍니다.

$ sudo dmidecode --type memory
- BIOS에서 읽어오는 값들로 BANK0에 8192MB 메모리가 꼽혀 있다고 나옵니다.

$ dmesg | grep BIOS
- BIOS가 커널에게 제공하는 물리 메모리맵 정보입니다.
- 맵 정보 중에 usable 부분이 커널에서 사용할 부분입니다.

$ cat /proc/iomem
- 위의 BIOS가 제공하는 메모리맵에 맞춰 매모리 맵핑을합니다.
- 위의 usable 부분이 System RAM으로 표시되며 그 부분을 전부 합하면 커널에서 관리할 메모리 영역이 나옵니다.

$ grep "System RAM" /proc/iomem | awk '{ print toupper($1) }' | \
while read x; do
echo "obase=16;ibase=16;$x" | bc;
done > /tmp/system_ram_list

$ cat /tmp/system_ram_list | \
while read x; do
TMP_STR="$TMP_STR$x";
echo $TMP_STR;
echo "obase=10;ibase=16;$TMP_STR" | bc;
done
...
-56FFF-46FFF-A6FC6FFF-F91FFF-11893FFF-FFF-13F5FFFFF
-8470970361

$ echo "8470970361/1024" | bc
8272431


정확한 값은 8272431.993164063로 8272432로 나와야하는데
bc 계산기가 기본으로 내림으로 처리하네요...

$ dmesg | grep Memory
- 위에서 계산한 값과 커널 부팅 중에 나온 전체 메모리 용량이 같은 것을 볼 수 있습니다.
- 이 부분이 커널에서 관리할 메모리 전체 용량입니다.
[ 0.000000] Memory: 7808772K/8272432K available (7363K kernel code, 1142K rwdata,
3400K rodata, 1336K init, 1440K bss, 463660K reserved)

$ free
total used free shared buffers cached
Mem: 8060592 2825864 5234728 255548 153932 1278108
- free에서 메모리 전체 용량이 위의 available 용량보다 크고 전체 용량보다는 적게 나오는데(7808772K~8272432K)
이부분은 위의 URL를 참조 하시기 바랍니다. 커널이 부팅 완료 후 일부 메모리 부분을 메모리 해제하면서 생긴 차이라고하네요
친절하게 소스 파일 위치까지 설명이 돼 있네요

그리고 이 부분이 질문하신 문제의 원인으로 추측합니다.
리눅스 배포판 구성에 따라서 위의 kernel code, rwdata, rodata, init, bss, reserved 크기가 다를 수 있고
이 부분 중 커널 부팅 후 메모리 해제되는 부분의 크기도 다를 수 있으니
free 명령어로 확인하는 전체 메모리 용량은(위에서 언급한 부분을 제외한 용량이니)
커널 및 초기화 코드 구성이 다르면 다르게 나옵니다.

Viewing all articles
Browse latest Browse all 4577

Latest Images

Trending Articles