Мне было интересно, почему это так. Все ссылки (я нашел), касающиеся размера файла, указывают, что размер примерно такой же, как размер физической RAM, или размер, который процессор может адресовать. Я на 32-битной.
Я иногда использую kcore
, когда мне нужно строка
ОЗУ для поиска удаленного текста.
/ proc / kcore: 1,1 ГБ
ОЗУ: 2,6 ГБ
~ $ ll /proc/kcore
-r-------- 1 root root 1065349120 2011-12-05 09:42 /proc/kcore
~ $ sudo dd if=/proc/kcore of=/dev/null bs=1024
1040380+0 records in
1040380+0 records out
1065349120 bytes (1.1 GB) copied, 2.26191 s, 471 MB/s
~ $ free -m
total used free shared buffers cached
Mem: 2509 1742 766 0 132 1118
-/+ buffers/cache: 492 2016
Swap: 1051 0 1051
~ $ grep ^Mem /proc/meminfo
MemTotal: 2569640 kB
MemFree: 791548 kB
~ $ dmesg | grep Memory
[ 0.000000] Memory: 2554056k/2612412k available (4940k kernel code, 57908k reserved, 2333k data, 688k init, 1703108k highmem)
~ $ sudo lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Intel Corporation 82915G/GV/910GL Integrated Graphics Controller (rev 04) (prog-if 00 [VGA controller])
Subsystem: Intel Corporation Device 4556
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at ffa00000 (32-bit, non-prefetchable) [size=512K]
I/O ports at ec00 [size=8]
Memory at c0000000 (32-bit, prefetchable) [size=256M]
Memory at ffa80000 (32-bit, non-prefetchable) [size=256K]
Expansion ROM at <unassigned> [disabled]
Capabilities: [d0] Power Management version 2
Kernel driver in use: i915
Kernel modules: i915
Полный вывод dmesg
и lspci
на Ubuntu pastebin .
Кто-нибудь знает, почему это так
или - наблюдается ли у кого-нибудь такое же поведение (размер (kcore) <размер (RAM))?
Я наблюдаю такое же поведение в моей системе:
free -m
total used free shared buffers cached
Mem: 2011 1877 133 0 128 685
-/+ buffers/cache: 1063 947
Swap: 2099 1 2098
ll /proc/kcore
-r-------- 1 root root 1016M 2011-12-06 01:09 /proc/kcore
Хорошо, я не уверен в этом, но это может быть связано с проблемой HIGHMEM / LOWMEM в 32-битных системах.
Посмотрите на это:
dmesg | grep MEM
[ 0.000000] 1158MB HIGHMEM available.
[ 0.000000] 887MB LOWMEM available.
через linux-mm
Почему highmem
[ 118] В настоящее время 32-битная архитектура x86 является наиболее популярным типом компьютеров. В этой архитектуре ядро Linux традиционно делит 4 ГБ адресного пространства виртуальной памяти на 3 ГБ для пользовательских программ и 1 ГБ для ядра.
....
Как справиться с highmem
Однако многие люди настаивают на использовании более 1 ГБ физической памяти в такой 32-битной системе. Это заставляет ядро Linux перепрыгивать через некоторые интересные скачки ...
В основном система использует следующую тактику:
Память сверх физического адреса 896 МБ временно отображается в виртуальную память ядра всякий раз, когда ядру требуется доступ к этой памяти.
Данные, к которым ядру часто требуется доступ, размещаются в нижних 896 МБ памяти (ZONE_NORMAL) и могут быть немедленно доступны ядру (см. Временное отображение).
...
blockquote>Итак, я думаю, что мы видим только зарезервированное для ядра пространство памяти с / proc / kcore. Кстати, я тоже использую 32-битную версию Ubuntu.