6

У меня были серьезные проблемы с производительностью, как в Ubuntu 11.10, так и в Debian Wheezy:

Если один процесс использует много оперативной памяти (скажем, 3700 МБ из 3900 МБ), система быстро становится непригодной для использования с постоянной перегрузкой диска. Это доходит до того, что оконный менеджер не отвечает, и уничтожение нарушающего процесса занимает несколько минут. (На самом деле добраться до терминала, выдать pkill, подождать немного дольше, пока сигнал действительно не пройдет)

Эта проблема возникает, даже если раздел подкачки полностью отключен.

При исследовании iotop похоже, что большая часть активности на диске - чтение с диска, переход к таким процессам, как Google Chrome и средство визуализации X Window. Однако это только ограниченная информация, поскольку iotop больше не обновляется, пока система находится в режиме полной загрузки.


Мой вопрос:

1) что вызывает массивное чтение диска? 2) как я могу предотвратить невозможность использования системы?

3 ответа3

4

Система перемещает данные в ОЗУ внутрь и из жесткого диска, чтобы освободить место для других данных в ОЗУ. Дисковые операции намного медленнее, чем операции с ОЗУ, что приводит к значительному замедлению работы системы. Когда в вашей системе заканчивается физическая память, система делает это для увеличения объема доступной "виртуальной" памяти за счет производительности. Это состояние называется избиением.

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

Редактирование: поскольку в вашей системе недостаточно физической памяти, программы должны чаще читать с жесткого диска, поскольку свободное место в ОЗУ обычно используется для хранения файлов, к которым часто или недавно обращались, чтобы уменьшить чтение с диска. При недостатке свободной оперативной памяти можно кэшировать меньше файлов, что снижает производительность. Это особенно актуально для таких приложений, как Chrome, которые требуют значительных ресурсов памяти и операций ввода-вывода. Еще раз, добавление ОЗУ увеличит производительность. Для получения дополнительной информации о кэшировании см. Статью в Википедии.

2

Если причиной ваших проблем являются известные процессы, вы можете ограничить их, используя ulimit Например, запустите программу запуска вашего приложения следующим образом:

#!/bin/bash
ulimit -v 1048576
/usr/bin/greedyapp

Ваше приложение сможет получить только 1 ГБ виртуальной памяти до того, как возникнут ошибки нехватки памяти. Я пробовал это с браузерами, и это эффективно защитит вашу оперативную память, не убивая браузер сразу, когда достигнет своего предела. Но тогда приложение может вести себя странно (например, перестать отвечать на пользовательский ввод), поэтому вы можете сначала попробовать его с очень строгим ограничением, чтобы увидеть, что оно делает в нехватке памяти. Тем не менее, намного лучше, чем эти HD-треши.

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

1

DragonLord прав, проблема в том, что ОС не нравится, что вы используете чрезмерное количество оперативной памяти. Чем ближе вы к максимальному увеличению вашей оперативной памяти. Система перейдет в состояние, в котором она начнет использовать виртуальную память. Чем быстрее ваш жесткий диск, тем быстрее будет работать компьютер в этом состоянии, однако при этом вы можете получить только такую высокую производительность. Чтобы предотвратить это, нужно больше оперативной памяти.

Очевидно, вы уже понимаете, что проблема заключается только в использовании определенных программ, некоторые из которых вы создали. Из-за предоставленной информации логично предположить, что ваша проблема связана с ОЗУ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .