|

Насилуем Линукс!
Xakep, номер #038, стр. 038-052-1
Как за 13 минут поднять свою ОСь
Нагорский Артем aka Cordex (cordex@xakep.ru)
Оптимизация Линукс... У многих, наверно, при этом слове сжимается сердце и отвисает челюсть. Типа "что там оптимизировать-то? Линукс и так - рулез форева!" Нда... Молодой человек, вас я попрошу удалиться. А всех тех, кто уже всласть потрахался с этой дивной ОСью и понял, что пора лезть своими шаловливыми ручонками внутрь системы, - приглашаю к чтению. Сегодня состоится жесткий садо-мазо-сеанс, на котором ты после небольшого надругательства заставишь свою ОСь доставлять тебе наибольшую отдачу и удовлетворение. Let's go!
Зачем это надо?
"Зачем вообще что-либо оптимизировать? Ведь вроде и так все в *никсах рулем..." - скажешь ты и будешь абсолютно не прав. Все дело в том, что после инсталляции в преобладающем большинстве случаев по дефолту все настройки системы произведены с минимальной оптимизацией, которая включает в себя минимальные настройки производительности, скорости большинства девайсов, программ, etc. Можно, конечно, забить на все и продолжать сидеть в такой минимально оптимизированной Оси, а можно, что присуще кульному хацкеру, немного повозиться и заметно ускорить и улучшить работу своего друга Линукса. Ведь, в конце концов, это несложно.
Оптимизируем выполнение программ
Вполне естественно, что все настройки исполняемых программ находятся в файле /etc/profile . Немного пошаманив с файлом profile, мы можем получить хорошее увеличение производительности всех компилируемых прог. Все, что нужно сделать, так это добавить некоторые флаги в этот файл. Что нам нужно в первую очередь? Естественно, увеличение скорости. Поэтому добавляем в /etc/profile следующую строку:
CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions'
Чтобы подстроить выполнение под свой проц, нужно просто задать конкретную модель:
-mcpu=cpu_type и -march=cpu_type
Таким образом, чтобы получить максимальное ускорение при компиляции программы, используется флаг 09, но при этом несколько увеличивается и вес программы.
Затем добавим в строку export файла "/etc/profile" переменные "CFLAGS LANG LESSCHARSET": export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS LANG LESSCHARSET
И остался последний шаг: перезайти в систему, чтобы все изменения вступили в силу. Стоит отметить, что будущая оптимизация компилируемых программ будет работать с компилятором Egcc, но это не трабла, т.к. он входит в Линукс по умолчанию.
Файловая система
Далее пунктом вторым у нас идет оптимизация святая святых всякого гика: файловой системы. Для этого нам понадобится файл bdflush, так как он, скажу тебе по секрету, связан с виртуальной памятью ядра Линукс. Находится он по адресу: /proc/sys/vm/bdflush . Что мы можем с ним сделать? В принципе, что угодно, но сейчас мы просто изменим некоторые дефолтовые значения в нем. Итак, начнем. Выполни следующую команду:
echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush
Таким образом, меняются некоторые значения в файле bdflush. Говоря простым языком, мы меняем максимальное число буферов, содержимое которых должно быть записано на диск. Чтобы каждый раз не геморроиться с набиванием этой команды (мы же гики! :), просто добавим эту команду в /etc/rc.d/rc.local, и теперь она будет выполняться всякий раз при загрузке Линукса. В итоге мы имеем вот что: запись на диск заполненных буферов (что неминуемо подтормаживает систему) осуществляется позже, чем обычно. Следовательно, как я уже отметил, шансы на возникновение конфликтов оборудования значительно снижаются.
Содержание Вперед на стр. 038-052-2
|