У меня есть две ОС на моем ПК. Я установил Ubuntu 18.04 рядом с Windows 10. Общий поршень - 3,94 ГБ.
На Ubuntu мой общий поршень является более крупным, чем сумма свободного поршня и используемого поршня на 1,5 ГБ. И любитель/кэш - 1.5 ГБ.
Действительно ли это нормально, и это, как Linux работает и если мне будет нужно больше памяти, это возьмет от любителя/кэша? если не, как решить эту проблему?
$ watch -n 5 free -m
Every 5,0s: free -m gleb: Sat Jul 21 14:34:49 2018
total used free shared buff/cache available
Mem: 3851 2048 214 343 1588 1184
Swap: 2047 0 2047
$ vmstat -s | head -10
gleb@gleb:~$ vmstat -s | head -10
3943920 K total memory
2102300 K used memory
2350048 K active memory
984768 K inactive memory
209772 K free memory
38824 K buffer memory
1593024 K swap cache
2097148 K total swap
0 K used swap
2097148 K free swap
$ cat /proc/meminfo | head -10
MemTotal: 3943920 kB
MemFree: 181792 kB
MemAvailable: 1126248 kB
Buffers: 32236 kB
Cached: 1463972 kB
SwapCached: 0 kB
Active: 2340464 kB
Inactive: 1021944 kB
Active(anon): 1691844 kB
Inactive(anon): 588964 kB
$ sudo lshw
description: Notebook
product: 80SM (LENOVO_MT_80SM_BU_idea_FM_Lenovo ideapad 310-15ISK)
vendor: LENOVO
version: Lenovo ideapad 310-15ISK
serial: PF0L15FM
width: 64 bits
...
-memory
description: System Memory
physical id: 26
slot: System board or motherboard
size: 4GiB
-bank:0
description: SODIMM DDR4 Synchronous 2133 MHz (0,5 ns)
product: M471A5244BB0-CPB
vendor: Samsung
physical id: 0
serial: 00000000
slot: ChannelA-DIMM0
size: 4GiB
width: 64 bits
clock: 2133MHz (0.5ns)
Путем дескрипторы Linux, RAM зависит от версии ядра Linux, но в большом изображении, она идет примерно как это:
Фактические аппаратные средства имеют X
сумма RAM. Linux загружается и берет под свой контроль RAM как можно больше (некоторые могут быть зарезервированы BIOS/встроенным микропрограммным обеспечением, некоторой другой частью интегрированной графикой, и т.д.). Остальная часть RAM является первой free
.
Во время начальной загрузки ядра ядро Linux определяет местоположение файловой системы и запускается init
процесс (в наше время SysV init, Upstart или Systemd), который нуждается в некоторой RAM и запустит дополнительные процессы с той точки вперед. Все содержание, которое чествовалось от файловой системы, будет удержано cache
если это возможно. Это позволяет ядру пропускать чтение файловой системы (и жесткий диск) в будущем, если те же данные необходимы снова. RAM это init
или любые другие потребности процесса непривилегированного режима в обработке инструкций в ЦП называют used
.
По умолчанию, каждый раз, когда процесс непривилегированного режима пишет что-то в файловую систему, ядро вместо этого поместит записанное содержание в buffers
и притворитесь на процесс непривилегированного режима, что данные были уже записаны в файловую систему. Процесс непривилегированного режима продолжается, и ядро продолжает писать буферы в файловую систему (и жесткий диск) в paraller.
В конце, used
RAM является частью RAM, которая не может быть легко освобождена, если для другого процесса нужно больше RAM. free
RAM является частью RAM, которая не используется ни для чего (практически потраченная впустую RAM) и buffer
или cache
часть RAM, которая используется для ускорения ввода-вывода. Если для некоторого процесса нужно больше RAM, чем free
, RAM буфера и кэша принесена в жертву, но общая производительность может пострадать в результате.
Что касается проблемы Вы упомянули в комментариях о системе, работающей медленнее, когда некоторое определенное приложение запущено, необходимо было бы поделиться большей информацией о том конкретном случае. По всей вероятности приложение, Вы работаете на Linux и "том же" приложении в Windows, не является тем же самым.