Назад | Перейти на главную страницу

Сервер отказывается использовать раздел подкачки

Мы запускаем сервер с 23 ядрами (cpuinfo показывает 22 как наивысший номер процесса) и 66 гигабайт ОЗУ. Команда разработчиков запускает несколько приложений, которые занимают много памяти.

Я заметил, что: 1. Даже когда память работает очень мало (свободная память = 167 МБ), подкачка не используется. Интересно, почему сервер отказывается использовать своп. Есть идеи по этому поводу? 2. Нагрузка на систему иногда увеличивается до цифр, например, 70+, я вижу, что эти приложения интенсивно вводят-вывод ... может ли это привести к таким высоким средним нагрузкам?

Вот вывод VMstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0  28932   1049  31757    0    0     6   145    6   33  1  0 98  0  0
..
..
12  2      0    167   1876  57749    0    0   932 49604 2306 96856 26  8 58  7  0

Вывод из meminfo

MemTotal:     66000044 kB
MemFree:      11824808 kB
Buffers:       1498068 kB
Cached:       48842440 kB
SwapCached:          0 kB
Active:        5350660 kB
Inactive:     46810284 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:     66000044 kB
LowFree:      11824808 kB
SwapTotal:    131074324 kB
SwapFree:     131074324 kB
Dirty:         2641608 kB
Writeback:          96 kB
AnonPages:     1819092 kB
Mapped:         766660 kB
Slab:          1753100 kB
PageTables:     131908 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  164074344 kB
Committed_AS:  9460100 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    336508 kB
VmallocChunk: 34359401823 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

Вы читаете это неправильно и почти не используете свою память.

MemTotal:     66000044 kB = 63GB available to the system
MemFree:      11824808 kB = 11GB with nothing at all used.
Buffers:       1498068 kB = 1.4GB
Cached:       48842440 kB = 46GB of data from the drive that is kept in otherwise unoccupied memory
SwapCached:          0 kB
Active:        5350660 kB = 5.1GB of memory that is actually used by applications.

Когда вы читаете данные с диска, они попадают в память. Если ничто другое не конкурирует за память, этот файл остается в памяти до тех пор, пока приложение не попытается использовать пространство. При чтении файла с диска в первую очередь проверяется кеш.

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