Почему система может стать безразличной?

Добавьте "acpi_osi=Linux" к загрузчику


Пример:

title Arch Linux
root (hd0,1)
kernel /vmlinuz26 root=/dev/sda5 ro acpi_osi=Linux
initrd /kernel26.img
12
23.05.2012, 16:28
1 ответ

Это - путь GNU/Linux и другая работа многозадачных систем, они совместно используют процессор среди рабочих процессов, dot не будет иметь 99%, но 100% в течение 99% времени. Каждый процесс доминирует над процессором в течение определенного промежутка времени.

Это обрабатывается планировщиками (Linux имеет несколько планировщиков, некоторые просто используют обычную стратегию, некоторая попытка дать больше времени пользовательским интерфейсам, и так далее).

Теперь, в Вашем случае, проблема была — вероятно — это dot не занимал много процессорного времени, но большую память. И когда программа использует слишком много памяти, там перегружается, который является точно процессом, который заставляет систему заморозиться, не потому что dot делает много, но потому что ядро должно переместить страницы памяти назад и вперед между диском (раздел подкачки) и системной памятью.

Даже если dot просто брал 99% процессорного времени, возможности состоят в том, что изменение на текстовый терминал было бы почти непосредственно, что происходит, то, что ядро должно переместиться dot материал из памяти, таким образом, это может поместить X назад в памяти так, чтобы X видьте клавиши, которые Вы просто нажимаете и перемещаете в текстовый терминал, затем ядро должно переместиться X из памяти для dot который все еще работает, и затем также переместитесь dot перемещать процессы текстового терминала (возможно, просто login?) назад в памяти. (Если это выглядит грязным, это не просто, потому что пример грязен — действительность - это грязное.)

Пример - то, если Вы входите в систему текстовый терминал, Вы можете просто нажимать клавиши, поражать клавишу Backspace, и это счастливо произойдет в реальном времени, но если Вы делаете что-то столь же простое как выполнение мелкого инструмента как ps, "заморозится" некоторое время, потому что это имеет к свободной памяти для загрузки ps (и это также должно ожидать в диске очередь ввода-вывода, которая в большой степени используется для перемещения данных в и из памяти, пока это не может запросить ps от файловой системы).

15
27.01.2020, 19:56
  • 1
    Гм, таким образом, путь к лучшему пользовательскому опыту состоял бы в том, чтобы указать определенные программы как "липкие" и таким образом препятствовать тому, чтобы те были выгружены. –  Christoph Wurm 23.05.2012, 16:40
  • 2
    не работала как этот с 70-х и исходной семантики 'липкого' бита. Можно, однако, заблокировать (части) программы в память, таким образом, они не могут быть выгружены. Оперативная память является дорогой роскошью, хотя, таким образом, это не может быть сделано для всего. –  Alexios 23.05.2012, 18:17
  • 3
    @njsg, спасибо за хорошее объяснение. Последующий вопрос: там никакой путь не состоит в том, чтобы предотвратить перегрузку? Я понимаю, что свопинг делает использование памяти более эффективным в целом, но должны быть пределы. По моему скромному мнению, процесс, столь же важный как X, никогда не должен перемещаться из памяти. Существует ли способ настроить подобную Unix систему, таким образом, что существенные процессы защищены от того, чтобы быть выселенным? На сервере это - другая вещь, но на рабочем столе у меня был бы требующий много памяти процесс, чтобы разрушить, чем иметь мою настольную остановку, говорящую со мной. –  A. Donda 30.09.2013, 19:29

Теги

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