Я думаю, что проблема сбоя не обязательно вызвана обменом. Если программа что-то играет, Linux должен это заметить, а не менять местами. Программы, которые мало что делают - это первые, которые меняются местами. Вы можете проверить, действительно ли программа поменялась местами, посмотрев на поле RSS
/RES
с ps или top. RSS
- это размер резидентного набора, физическая память без перестановки, используемая задачей (в килобайтах).
Я думаю, что ваша проблема, скорее всего, вызвана неправильным планированием процессора и ввода-вывода и некоторой неэффективностью Rhythmbox, что делает его чувствительным к высоким системным нагрузкам. Приоритет процессора можно изменить с помощью команд nice и renice. Приоритет ввода / вывода можно изменить с помощью команды ionice. Только суперпользователь может использовать высокие приоритеты. Вы также должны знать, что ребята из ядра Linux пытаются улучшить быстродействие настольных систем с помощью различных патчей с низкой задержкой, поэтому вы можете рассмотреть возможность их использования. Одним из них является патч ~ 200 строк, написанный Майком Гэлбрейтом, который поразил даже Линуса. Альтернативой этому патчу является трюк cgroups от Lennart Poettering, который, я думаю, будет использоваться по умолчанию в Fedora 15.
В любом случае, без этих патчей есть два варианта: запустить программу с высоким приоритетом или изменить ее впоследствии. Для первого варианта вы можете использовать скрипт-обертку вокруг Rhythmbox:
#!/bin/sh
# Run Rhytmbox with high CPU and I/O priorities
nice -n -10 ionice -c 1 -n 1 su -l -c rhythmbox alexei
Вам нужно будет запустить его как root. Если вы не хотите входить в систему как root, чтобы начать это, вы можете использовать su
или sudo
.
Что касается последующего изменения приоритета, если вам лень входить в систему как пользователь root, чтобы изменить его, вы можете попробовать использовать задание cron, которое запускается каждые 5 минут и устанавливает приоритет процесса rhythmbox
, но я бы не рекомендовал делать это :
#!/bin/sh
renice -n -10 -p `pidof rhythmbox`
ionice -c 1 -n 1 -p `pidof rhythmbox`