Ускорение работы linux

Статья, о том как можно ускорить работу GNU/Linux с помощью swappiness, vfs_cache_pressure, drop_caches и др. С недавних пор досупен патч многократно ускоряющий отзывчивость системы, я думаю кому интересно --> вот патч.

swappiness
(/proc/sys/vm/swappiness, ед.изм. проценты, до 100) - при заполнении такой части доступной RAM ядро приступит к использованию swap. Посмотреть значение можно при помощи команды "cat /proc/sys/vm/swappiness". В мой системе значение по умолчанию было 60, т.е. когда память заполнялась чуть больше чем наполовину, ядро начинало свопать. Имеет смысл увеличить это значение, я у себя использую 95. Изменить его можно при помощи команды:

echo 95 > /proc/sys/vm/swappiness

Разумеется, это надо делать при каждой загрузке системы. 
vfs_cache_pressure
(/proc/sys/vm/vfs_cache_pressure, ед.изм. "штуки") - влияет на отношение ядра к освободившимся от кэшированных оъектов файловой системы страницам ОЗУ. Значение по умолчанию - 100. Уменьшение этого значения заставляет ядро придерживать эти страницы почаще для своих нужд в будущем. Увеличение значения заставляет ядро чаще отдавать эта страницы для нужд других программ, т.е. при увеличении этого значения величина cached в выводе top будет расти медленнее. Немного подробнее об этой переменной можно прочитать в файле Documentation/filesystems/proc.txt от корня дистрибутива исходных кодов ядра. Какое именно значение стоит выставить мне пока удалось найти только в Сети, обычно рекомендуют 1000. Я думаю, что прояснить этот вопрос помогут исходники ядра, но до этого пока руки не доходят. Проверить и выставить значение можно аналогично действиям из предыдущего пункта.
drop_caches
(/proc/sys/vm/drop_caches) - это "командная" переменная, т.е. считывать её значение особого смысла нет, нужно только записывать. Предназначена для запуска принудительного освобождения оперативной памяти из-под кэшированных объектов. Это можно делать время от времени если память под кэши и буферы продолжает расходоваться слишком быстро и ядро снова начинает работать со swap. Побочный эффект - некоторое замедление производительности системы в целом до того, как будут снова закэшированы наиболее части используемые объёкты и данные. Запись в этот файл (/proc/sys/vm/drop_caches) значения 1 запустит очистку кэша страниц оперативной памяти, значение 2 запустит очистку кэша объектов файловой системы, значение 3 запустит 1 и 2 последовательно. Важный момент - данные будут просто уничтожаться, поэтому перед запуском этих процессов имеет смысл выполнить sync чтобы сбросить изменённые данные на диск. Тем не менее, на мой взгляд, для сильно нагруженного сервера, обрабатывающего большие объёмы данных за короткое время, между запуском sync и записью значения в этот файл в кэш могут попасть новые данные, которые на диск уже записаны не будут и, соответственно, будут утеряны. Так что пользоваться этим механизмом следует редко и осторожно, осознавая последствия. Пример команды записи:

sync && echo 2 > /proc/sys/vm/drop_caches

Ускоряем работу на машинах с большим объёмом ОЗУ.
Если на вашей машине ОЗУ редко поднимается до критического уровня, то можно ускорить работу методом наименьшего обращения к разделу подкачки.
Сделать это можно так:

Нужно открыть файл '''/etc/sysctl.conf'''
И создать в нём такую строку:

vm.swappiness=5
vm.vfs_cache_pressure=10000

p.s. значения vm.swappiness можно ставить от 0 до 100 (чем больше тем выше приоритет подкачки)

Ссылки
http://linuxportal.ru/forums/index.php/m/79946/#msg_79937

Теги: , ,

Дата: 22 ноября 2010

Автор: Аноним

Комментарии: 5

Комментарии: 5

  1. Вы жестоко ошибаетесь на счёт цифры в параметре swappiness. Чем меньше это число, тем больше ядро старается избегать использования свопа и наоборот. И да, чтобы не "Разумеется, это надо делать при каждой загрузке системы", запишем параметр в сисконтрол:
    # cat /etc/sysctl.conf|grep swappiness
    vm.swappiness=10
    означает, что ядро постарается практически не использовать своп.

  2. Всё выше сказанное к тому, что в статье вы сами себе противоречите.
    "echo 95 > /proc/sys/vm/swappiness (агрессивное использование свопа)"
    "vm.swappiness=5" (избегание свопа)

  3. Да просто тупые блогеры занимаются перепостами.. сами головой не думают...

  4. Автор, вы читали комментарии в ядре?

    vfs_cache_pressure

    This percentage value controls the tendency of the kernel to reclaim
    the memory which is used for caching of directory and inode objects.

    At the default value of vfs_cache_pressure=100 the kernel will attempt to
    reclaim dentries and inodes at a "fair" rate with respect to pagecache and
    swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer
    to retain dentry and inode caches. When vfs_cache_pressure=0, the kernel will
    never reclaim dentries and inodes due to memory pressure and this can easily
    lead to out-of-memory conditions. Increasing vfs_cache_pressure beyond 100
    causes the kernel to prefer to reclaim dentries and inodes.

    Increasing vfs_cache_pressure significantly beyond 100 may have negative
    performance impact. Reclaim code needs to take various locks to find freeable
    directory and inode objects. With vfs_cache_pressure=1000, it will look for
    ten times more freeable objects than there are.

    swappiness

    This control is used to define how aggressive the kernel will swap
    memory pages. Higher values will increase aggressiveness, lower values
    decrease the amount of swap. A value of 0 instructs the kernel not to
    initiate swap until the amount of free and file-backed pages is less
    than the high water mark in a zone.
    The default value is 60.

    Вы несете полную чушь и бред сумашедшего.

Оставить комментарий

*

Комментарий:

Ваш e-mail не будет опубликован.
Обязательные поля помечены *

Разрешенные HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>