Приостановите/возобновите единственный процесс к/от диску

Вот критерии, которые я использую в моем ~/.profile:

  • Если одна из переменных SSH_CLIENT или SSH_TTY определяется, это - ssh сессия.
  • Если имя родительского процесса оболочки входа в систему sshd, это - ssh сессия.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
  SESSION_TYPE=remote/ssh
# many other tests omitted
else
  case $(ps -o comm= -p $PPID) in
    sshd|*/sshd) SESSION_TYPE=remote/ssh;;
  esac
fi

(Почему Вы хотели бы протестировать это в своей конфигурации оболочки, а не своем запуске сессии?)

22
22.10.2011, 19:36
4 ответа

Нет никакого общего средства для спящего режима единственного процесса, только целая система.

Однако, если Вы не заботитесь, что образ процесса не переживет перезагрузку, существует встроенное средство для того, чтобы сохранить образ процесса на диск: свопинг. Удостоверьтесь, что у Вас есть достаточно области подкачки, и если будет давление памяти, и процесс не активен (например, потому что это приостановлено), то его память будет выгружена.

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

perl -e '$tmp = "a" x 999999999' # allocate about 1GB

Вы не получаете контроля на том, что выгружается, таким образом, другие процессы могут быть выгружены. На Linux можно загрузить процесс назад путем насильственного доступа к страницам, которые он отображает. Сценарий в этом ответе сделает это: загрузите в память все страницы, отображенные процессом (обратите внимание, что это включает открытые файлы; можно пересечь регионы выборочно на основе информации о карте, чтобы не загружать данные, что Вы знаете, что Вам не будет нужно, видеть этот ответ для получения дополнительной информации).

8
27.01.2020, 19:43

Удостоверьтесь, что у Вас есть много области подкачки. Удостоверьтесь, что Ваша система установлена предпочесть подкачивать неактивные страницы (vm.swappiness=100). Затем должно быть достаточно приостановить процесс. Ядро предпочтет выгружать неактивные страницы.

5
27.01.2020, 19:43

На Mac OS X можно попытаться использовать purge команда (предоставленный XCode) к свободному некоторая (неактивная) RAM.

vm_stat
purge
vm_stat
-1
27.01.2020, 19:43
  • 1
    purge не помог бы здесь. Это удаляет дисковый кэш, но это не заставит память процесса быть выгруженной, и это не сделает его быстрее для другого процесса для получения RAM. –  Gilles 'SO- stop being evil' 08.02.2012, 16:35

Термин, который Вы ищете, является "Установкой контрольных точек приложения".

Инструменты я знаю это, могут сделать, которые являются CryoPID и CryoPID2.

Оба инструмента для Linux только.

Я не знаю подобный инструмент для BSD или OS X.

13
27.01.2020, 19:43

Теги

Похожие вопросы