Size: a a a

2021 April 07

🌚

🌚 YupiRex in pro.bash
#!/usr/bin/bash                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                             
total="$(sed -rn 's/^MemTotal: *([0-9]+) .*/\1/p' /proc/meminfo)"                                                                                                                                                                              
free="$(sed -rn 's/^MemFree: *([0-9]+) .*/\1/p' /proc/meminfo)"                                                                                                                                                                                
shared="$(sed -rn 's/^Shmem: *([0-9]+) .*/\1/p' /proc/meminfo)"                                                                                                                                                                                
buffers="$(sed -rn 's/^Buffers: *([0-9]+) .*/\1/p' /proc/meminfo)"                                                                                                                                                                            
cache="$(($(sed -rn 's/^Cached: *([0-9]+) .*/\1/p; s/^SReclaimable: *([0-9]+) .*/\1/p;' /proc/meminfo| sed ':a; /$/N; s/\n/ + /; ta')))"                                                                                                      
available="$(sed -rn 's/^MemAvailable: *([0-9]+) .*/\1/p' /proc/meminfo)"                                                                                                                                                                      
swtotal="$(sed -rn 's/^SwapTotal: *([0-9]+) .*/\1/p' /proc/meminfo)"
swfree="$(sed -rn 's/^SwapFree: *([0-9]+) .*/\1/p' /proc/meminfo)";

echo -e "mem total\t: $total kB
mem used\t: $((total - free - buffers - cache)) kB
mem free\t: $free kB\nmem shared\t: $shared kB
mem buff/cache\t: $(($buffers + $cache)) kB
mem available\t: $available kB
swap total\t: $swtotal kB
swap used\t: $((swtotal - swfree)) kB
swap free\t: $swfree kB"
источник

EK

Evgeny Kuchkov in pro.bash
в общем-то твои калькуляции показывают те же цифры что и топ
источник

EK

Evgeny Kuchkov in pro.bash
и не отвечают на вопрос кто схавал свап
источник

🌚

🌚 YupiRex in pro.bash
для использованой памяти из общего отнимается свободная буфер и кеш
для свап отнимается только сувободная, но буфер остается
источник

pV

pav VER in pro.bash
сохранить надо
источник

pV

pav VER in pro.bash
полезная вещь
источник

🌚

🌚 YupiRex in pro.bash
в буфере и кэше потерялось
источник

EK

Evgeny Kuchkov in pro.bash
хорошо, попробую осмыслить калькуляции выше
источник

🌚

🌚 YupiRex in pro.bash
From the htop FAQ:

It is not possible to get the exact size of used swap space of a process. Top fakes this information by making SWAP = VIRT - RES, but that is not a good metric, because other stuff such as video memory counts on VIRT as well (for example: top says my X process is using 81M of swap, but it also reports my system as a whole is using only 2M of swap. Therefore, I will not add a similar Swap column to htop because I don't know a reliable way to get this information (actually, I don't think it's possible to get an exact number, because of shared pages).
источник

🌚

🌚 YupiRex in pro.bash
еще можно глянуть vmstat -s
источник

V

Vikentsi in pro.bash
Там колоночка из первой картинки. SHM показывает по 19g  если это тот самый shared memory
источник

F

Fljúgandi Kettlingur... in pro.bash
Это правда. А еще есть Code of Conduct, и у MIT он тоже есть. И преподаватель (не важно, на ставке или на приглашенной позиции), высказывающий личное мнение в официальной студенческой рассылке, резко идущее вразрез с СоС - не должен удивляться огорчению вуза по этому поводу.
источник

F

Fljúgandi Kettlingur... in pro.bash
О, люблю разборки за своп. Кстати, я лично вижу везде, включая служебные AWS.

Расскажи, чем тебе не нравится своп?
источник

∀lǝxǝʎ in pro.bash
мы не такие богатые что бы использовать облака

очевидно чем. тем что это адски медленно, если система дожила до того что ей нужен swap надо расширять память, у нас нет вялоработающих сервисов, если процесс запущен он должен быстро отвечать. а не когда сможет данные со swap'а подтянуть, справедливости ради отмечу, что тот наш софт размеры базы которого очень велики для памяти, сам умеет работать с диском, а в памяти держать только свой кэш, но по большей части все базы хранятся в памяти

Что касается моих рабочих компов, то тут при попадании в swap ноут становится не юзабелен, поэтому что я предпочитаю укладываться в существующую память или получать oom, в общем-то всё то же самое что и на серверах
источник

F

Fljúgandi Kettlingur... in pro.bash
эммм. Но ведь своп - это не резерв для того случая, когда у тебя память кончилась.
Своп - это механизм оптимизации потребления памяти, позволяющий отложить туда куски памяти, которые были адресованы, но никогда или почти никогда не используются, и положить на их место что-то другое. Например, дисковые кэши.
источник

∀lǝxǝʎ in pro.bash
я ж говорю, что у меня нет данных которые не используются или не могут потребоваться БД
источник

∀lǝxǝʎ in pro.bash
если база будет ждать пока данные вычитаются из swap, то это будет достаточно долго
источник

∀lǝxǝʎ in pro.bash
есть базы которые могут себе это как-то позволить, тогда они живут на своём кэше и подтягивают данные с диска по мере необходимости, сами управляя своей памятью, но даже им почти гарантированно нужно nvme, но и его не всегда хватает
источник

F

Fljúgandi Kettlingur... in pro.bash
в таком случае, ядро не отправит их в своп.
Но даже на сервере, где нет ничего, кроме RDBMS, в памяти еще полно всякого, что можно выложить "на холодную".

У тебя нет ничего, кроме БД? Фронт? Воркеры?
источник

∀lǝxǝʎ in pro.bash
нет, всё отдельное
но и фронт и воркеры работают по другому механизму и памяти практически не потребляют, так что их это не касается, на свопа там тоже нет
источник