Arch Linux считает, что у меня есть около 16 ГБ оперативной памяти, когда у меня только 8

10

Я сделал несколько поисков, и я не могу найти ничего в Google о том, почему, но arch выделил 7,7 гигабайта для оперативной памяти и 7,9 гигабайта для обмена.

  • У меня только 8 ГБ оперативной памяти.

  • он выделил больше оперативной памяти для замены, чем обычные

Как я мог изменить распределение?

вывод cat /proc/meminfo: MemTotal: 8091960 kB MemFree: 4925736 kB MemAvailable: 6131188 kB Buffers: 268936 kB Cached: 1219460 kB SwapCached: 0 kB Active: 1527516 kB Inactive: 1301140 kB Active(anon): 768904 kB Inactive(anon): 711440 kB Active(file): 758612 kB Inactive(file): 589700 kB Unevictable: 32 kB Mlocked: 32 kB SwapTotal: 8300540 kB SwapFree: 8300540 kB Dirty: 1960 kB Writeback: 0 kB AnonPages: 1306968 kB Mapped: 382800 kB Shmem: 140100 kB Slab: 197964 kB SReclaimable: 163104 kB SUnreclaim: 34860 kB KernelStack: 6864 kB PageTables: 29200 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 12346520 kB Committed_AS: 3927808 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 186368 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 584316 kB DirectMap2M: 7716864 kB DirectMap1G: 0 kB

jaw2233
источник
21
swap по определению не использует RAM.
user4556274
1
Тот же (или чуть более) своп, чем у вас есть ОЗУ, является хорошим началом ... Также помните, что пространство подкачки может использоваться, если вы переходите в спящий режим (помещаете ОЗУ на диск). В старые времена подкачку говорили вдвое больше, чем оперативной памяти - но для Linux это «правило» применялось только тогда, когда у вас было 512 МБ или меньше (или было 256 МБ). Однако были Unix-системы (по крайней мере, одна), в которых дизайн был таким, что вам всегда нужно было по крайней мере в два раза больше свопа. В ранних версиях Linux были ограничения на объем подкачки на раздел, количество разделов подкачки и / или общий объем подкачки. TBC
Баард Копперуд
2
Продолжение ... Чтобы действительно решить, какой объем подкачки вам нужен, вам действительно нужно тщательно проверить, сколько памяти на самом деле нужно для процессов, которые вы (и ваши пользователи) выполняете - но помните, что подкачка не заменяет слишком мало оперативной памяти. Тем не менее - и это от кого-то, кто получил только 2 ГБ (а не «только» 8 ГБ, как у вас) ОЗУ - большинство систем смогут хранить все процессы в ОЗУ. Однако им это и не нужно , поэтому подкачка используется для хранения «неиспользуемых» страниц памяти процессов - а иногда и целых «неиспользуемых» процессов - освобождая, таким образом, ОЗУ… эта «неиспользуемая» ОЗУ затем используется в качестве буфера и кеш, чтобы ускорить вещи.
Баард Копперуд
2
Число 7,7 ГБ, вероятно, исходит из ~ 300 МБ физической памяти, постоянно выделенной для ядра. Это ОЗУ все еще существует, но не может быть использовано для обычных программ.
Звол
1
Что заставляет вас верить, что «Arch думает, что у вас 16 ГБ ОЗУ»?
Марсель

Ответы:

26

Это говорит о том, что у вас есть 16 ГБ виртуальной памяти .

Виртуальная память - это общее количество физической памяти и пространства подкачки.

Это способ позволить вашей системе запускать больше программ, чем у нее есть физическое пространство.

Какой объем свопа должен быть выделен для машины - сложный и взвешенный вопрос; спросите 2 человек и получите 3 ответа :-)

Ваша настройка неплоха, и я бы не советовал вносить в нее изменения, пока вы не узнаете намного больше о том, как работает виртуальная память и как ее настраивать. Это хорошая отправная точка.

Стивен Харрис
источник
5
« Виртуальная память - это совокупная физическая память и пространство подкачки. » Нет, это не так. Например, на 64-разрядной машине с 4 ГБ ОЗУ и 4 ГБ подкачки я могу отобразить в памяти файл размером 64 ГБ. Это 64 ГБ виртуальной памяти, хотя объем оперативной памяти и раздела подкачки составляют до 8 ГБ.
Дэвид Шварц
1
@DavidSchwartz - это правильно. Правильнее будет сказать, что виртуальная память - это то, что можно рассматривать как память, предпочтительно с чем-то, поддерживающим ее. Это может быть либо чипы ОЗУ, какой-либо порт ввода-вывода, раздел подкачки, файл подкачки на диске, либо обычный файл, не имеющий особого значения для операционной системы или менеджера памяти. Также не требуется функционировать таким образом, что если вы что-то пишете, а затем сразу читаете это обратно, вы читаете то, что написали. (Например, некоторые регистры ввода / вывода функционируют таким образом.)
CVn
1
Это «версия для начинающих Unix 101». Я также не упомянул, как исполняемые страницы могут быть добавлены как карты только для чтения на карту памяти и другие забавные вещи, такие как перераспределение. Тем не менее, в приближении первого уровня VM = RAM + swap достаточно близки, и все, о чем этот вопрос был на самом деле.
Стивен Харрис
«Это говорит о том, что у вас есть 16 ГБ виртуальной памяти». - Нет никакого способа узнать это, так как ОП никогда не объяснял, почему он думает, что Арч говорит, что у него есть 16 ГБ.
Марсель
1
@StephenHarris Это приближения первого уровня, которые вызывают недоразумение за этим вопросом. Упрощения хороши, если они либо указывают на то, что они являются упрощениями, либо на самом деле верны.
Дэвид Шварц