LINUX.ORG.RU
ФорумAdmin

Процесс засвопился и очень долго выбирается из свопа


0

1

Абсолютно точно знаю, что ему надо выбраться оттуда целиком.

При этом еще знаю, что ему надо будет вытеснить другие части системы туда.

Но делает это он очень медленно. Можно ли его пнуть?

★★★★
Ответ на: комментарий от no-dashi

ну это самый топорный метод, ИМХО
Добавлю тред в избранное пожалуй, самому интересно можно ли пнуть из свопа один конкретно-взятый процесс?

Pinkbyte ★★★★★
()
Ответ на: комментарий от no-dashi

Ага. состояние такое: 24Гб памяти, 23.8Г занято. 16 своп. 8 занято.

выключать нельзя. OM killer строго нельзя

namezys ★★★★
() автор топика
Ответ на: комментарий от tazhate
             total       used       free     shared    buffers     cached
Mem:         24221      22859       1361          0          5         68
-/+ buffers/cache:      22785       1435
Swap:        25555      11494      14060

Это отпустило. Когда был пик, то 23800 на 200 было

namezys ★★★★
() автор топика

Еще мысль: попробуй ему приоритет сменить. Поставишь его повыше - он по идее выползет из свопа.

tazhate ★★★★★
()

Как уже советовали: 1) Высокий приоритет 2) используй cgroups, - для каждой группы можно настроить параметр swappiness.

hope13 ★★★
()

У меня тоже вопрос. Если начинает шуршать винт и система зависает и через некоторое время отвисает, когда крэшится сожравшее память приложение, то это от недостатка свопа?

puding
()
Ответ на: комментарий от puding

шуршать от недостатка памяти

крэшится уже от недстатка свопа

namezys ★★★★
() автор топика

а нельзя назначить процессу swapoff ionice пониже и таким образом без особых задумчивостей выпрыгнуть в обычное пространство?
Конечно, он может называться не свопон, а какой то внутренний процесс ядра. ЕЩё подкрутить параметр swappiness в sysctl.conf и где то в /sys или /proc не помню, может начнёт активнее выгружаться.

darkenshvein ★★★★★
()
Ответ на: комментарий от darkenshvein

а нельзя назначить процессу swapoff ionice пониже и таким образом без особых задумчивостей выпрыгнуть в обычное пространство?

А вылезать куда он будет? Памяти меньше свободной. Посмотри тред.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

Это я знаю. Проблема не в мало памяти, а в недодуманности и мусоре в ней. Но крохи ценного терять ельзя

namezys ★★★★
() автор топика
Ответ на: комментарий от namezys

ну мало-ли, я твою ситуацию регулярно на маках встречаю

q11q11 ★★★★★
()
Ответ на: комментарий от namezys

подробнее нельзя это всего лишь догадка, сам не пробовал.

darkenshvein ★★★★★
()
Ответ на: комментарий от darkenshvein

ну я слышал о ней, но не пользовался... программист я, а не админ.

namezys ★★★★
() автор топика
Ответ на: комментарий от namezys

Медленно потому он вытесняет 8Гб - 4Кб-ми страничками. Возможно по одной за раз. И не исключено что в разные места swap раздела.

anonymous
()
Ответ на: комментарий от puding

У меня тоже вопрос. Если начинает шуршать винт и система зависает и через некоторое время отвисает, когда крэшится сожравшее память приложение, то это от недостатка свопа?

нет. Это недостаток RAM.

drBatty ★★
()
Ответ на: комментарий от namezys

Это я знаю. Проблема не в мало памяти, а в недодуманности и мусоре в ней. Но крохи ценного терять ельзя

дык убей мусор. Или ты хочешь мусор в своп, а из свопа в память? Дык ядро тоже хочет, но у тебя какой-то неправильный мусор (ява что-ли?).

drBatty ★★
()
Ответ на: комментарий от darkenshvein

ну, команда ionice так и называется, если не в курсе.

ionice-то как вам поможет??

drBatty ★★
()
Ответ на: комментарий от Pinkbyte

ну я вменяемого результата не смог добиться. Может что изменилось…

drBatty ★★
()

что ему надо выбраться оттуда целиком.

А что ему будет мешать снова уходить в swap? Вроде, если страница памяти не активно используется, она может быть отправлена в swap.

Не знаю как гарантировано можно вытащить процесс из свопа, в порядке бреда могу предложить прочитать всю его память (/proc/PID/mem), только с помощью cat не получится, нужно читать /proc/PID/maps и делать lseek().

Вот есть такой код: http://www.rohitab.com/discuss/topic/37806-process-memory-dump-utility/ и такой http://unix.stackexchange.com/questions/6267/how-to-unswap-my-desktop Я надеюсь, у вас есть где потренироваться, и сколько у процесса страниц в swap'e вы через /proc/PID/smaps определять умеете.

mky ★★★★★
()
Ответ на: комментарий от drBatty

дык убей мусор.

Ага. Но софт память ОС не отдает, или из-за фрагментации, или из-за «очень» умных аллокаторов.

namezys ★★★★
() автор топика
Ответ на: комментарий от mky

Интересно, но не просто. Конечно, с ситуацией я разобрался, но хотелось бы на будующее что нить придумать.

И да, ни кто ему не мешает. Он похоже это и делает, и меня это не радует в том числе.

Там 2 процесса, отожрали слишком много. Их надо перезапустить для дефрагментации памяти. Но перед этим надо сдампить данные. И данные туда продолжают писаться. Дамп из памяти занимает секунд 30, терпимая потеря. А вот если хоть что нить засвопилось, то это могут быть часы.

namezys ★★★★
() автор топика
Ответ на: комментарий от amorpher

А своп зачем, или чтобы было?

Чтоб ом-килеры было не повадно

namezys ★★★★
() автор топика
Ответ на: комментарий от amorpher

А своп зачем, или чтобы было?

Чтоб ом-килеры было не повадно

namezys ★★★★
() автор топика
Ответ на: комментарий от namezys

но хотелось бы на будующее что нить придумать.

Для этого уже нужно разбиратся подробно, что именно происходит, например, постоянно смотреть/записывать какие процессы и насколько залезли в swap и сколько ОЗУ съели.

Просто, если у вас два процесса съели память и swap и каждый активно работает со своей памятью, то они и будут постоянно друг-друга пихать в swap. И раз ни один из процессов нельзя остановить, так как «данные туда продолжают писаться», то не понятно что делать.

Если бы один из жирных процессов можно было остановить, то он бы быстро целиком ушёл в swap, а другой бы вылез. Останавливать можно, допустим, через SIGSTOP или можно через chrt выкинуть процесс в SCHED_IDLE и забрать у него процессоры запуском ″while(1)″ с наибольшим nice. Но, не знаю насколько это вам подходит.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.