The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

CFQ IO Schedule или как уменьшить тормоза при интенсивной работе с диском (cfq schedule linux kernel tune io speed)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: cfq, schedule, linux, kernel, tune, io, speed,  (найти похожие документы)
From: Balancer <http://balancer.ru>; Date: Mon, 27 Feb 2007 14:31:37 +0000 (UTC) Subject: CFQ IO Schedule или как уменьшить тормоза при интенсивной работе с диском Оригинал: http://balancer.ru/forum/topic/753/50753/ Подавляющее большинство из нас сидит на ядрах 2.6 Но далеко не все в курсе, что настройки по умолчанию некоторых параметров в этой системе неоптимальны на десктопе. /proc/sys/vm/swappiness В этом псевдофайле хранится значение (в целых процентах), на сколько я понимаю (могу ошибаться), уровень свободной памяти, при котором система начнёт активно сбрасывать память в своп. Значение по умолчанию - 60. Это очень много. Такой параметр заставляет Linux начинать интенсивный свопинг задолго до реальной десктопной потребности в этом. Как следствие - значительный хруст винтом и тормоза при относительно невеликой загрузке памяти. # echo 10 > /proc/sys/vm/swappiness и ваша система начнёт сбрасывать данные в своп когда это будет реально необходимо. Сейчас у меня программы занимают 550Мб, буфера - 94Мб, а кеш - 342Мб из 1010Мб доступной памяти. А своп занят только на 22Мб. Диск - простаивает... /proc/sys/vm/vfs_cache_pressure Врать не буду, навскидку не помню, за что отвечает этот файл. Давно разбирался, больше года назад. Но помню, что значение туда лучше записать побольше :) # echo 1000 > /proc/sys/vm/vfs_cache_pressure CFQ IO Shedule Это шедулер ввода-вывода, старающийся обеспечить таймслайсы для каждого процесса. При используемом по умолчанию методе anticipatory, процесс, начавший интенсивно работать с диском, может не отдавать временные интервалы другим процессам. На десктопе это приводит к сильным субхективным тормозам. Пока кто-то "хрустит" диском, перерисовка GUI тормозит, программы не запускаются по минуте и т.д. и т.п. CFQ делает более равномерную загрузку. Практика. Смотрим: # cat /sys/block/hda/queue/scheduler Если видим: noop [anticipatory] deadline cfq меняем anticipatory на cfq: # echo cfq > /sys/block/hda/queue/scheduler Если cfq в ядре нет, то добавляем (menuconfig): Symbol: IOSCHED_CFQ [=y] Prompt: CFQ I/O scheduler Location: -> Block layer -> IO Schedulers Можно также сразу: Symbol: DEFAULT_CFQ =y Prompt: CFQ Location: -> Block layer -> IO Schedulers -> Default I/O scheduler (<choice> [=y]) После этого, система начинает более равномерно выделять доступ к диску всем фоновым процессам. Фактически это выражается в том, что машина совершенно перестаёт тормозить при 100% загрузке IO Wait (интенсивная работа с винтом, копирование больших файлов и т.п.) Можно в фоне запустить пару компиляций (Gentoo, привет!), копирование файла с винта на винт и при этом десктоп практически не тормозит там, где до этого буквально вставал колом :D
Приоритезация дискового ввода/вывода в Xen Материал из Xgu.ru, http://xgu.ru/wiki/Xen/diskio Автор: Андрей Авраменко, liks -=[at]=- altlinux.ru Содержание 1 Приоритеты для использования Disk I/O 1.1 ionice 1.2 Приоритеты гостевых доменов 1.3 Эксеприменты 1.4 Заключение 2 Дополнительная информация Приоритеты для использования Disk I/O ionice С выходом CFQ v3 в Linux 2.6.13 появилась возможность выставлять приоритеты использования дисковой подсистемы для процессов, чего раньше так не хватало. Подобно утилите nice для назначение приоритетов использования процессора появилась утилита ionice. Синтаксис команды прост: ionice -c класс -n приоритет -p PID Класс: 3 - Idle - Получает приоритет на использование жесткого диска только когда другие программы ничего не пишут. Приоритеты не используются. 2 - Best Effort - Класс по-умолчанию. Доступные приоритеты [0-7]. 1 - Real Time - Дает преимущественный доступ к диску процессу, не смотря на другие процессы. Доступные приоритеты [0-7]. Приоритеты гостевых доменов Теперь вернемся к самому Xen: После запуска гостевых систем по ps aux можно видеть в квадратных скобках появившиеся драйвера блочных устройств xvd, после которых идет ID гостевого домена. Выставляем для них приоритеты как для обычных процессов. Эксеприменты Проведем 2 эксперимента для операций чтения и записи. Выставим одной гостевой системе класс Real Time, а второй - Idle. 1. Запустим одновременно dd на обеих системах для записи небольшого файла. Конечно слово одновременно здесь относительно, поэтому я провел несколько тестов для точности результатов. dd if=/dev/zero of=/root/file.txt bs=1024 count=10240000 В результате средняя скорость в первой гостевой системе - 40Mb/sec, во второй - 20Mb/sec. 2. Другим экспериментом является операция тестирования скорости чтения диска с помощью hdparm: hdparm -t /dev/xvda В результате в первом гостевом домене скорость - 2Mb/sec, во втором - 25Mb/sec. Заключение Недостатком данного решения является отсутствие соответствующих опций в конфигурационном файле гостевых доменов Xen. Я постараюсь в ближайшее время поговорить с разработчиками на эту тему. Хочу обратить внимание, что данная возможность доступна только для CFQ, поэтому предварительно выполните: cat /sys/block/ИМЯ_ДИСКА/queue/scheduler Активный sheduler должен быть в квадратных скобках. Дополнительная информация * Which is the fairest I/O scheduler of them all? * Планировщики ввода/вывода в Linux * CFQ IO Schedule и /proc/sys/... Или как уменьшить тормоза при интенсивной работе с диском * Выбор планировщика ввода/вывода в Red Hat Enterprise Linux 4 и ядре версии 2.6

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, GalaxyMaster (?), 16:28, 25/03/2007 [ответить]  
  • +/
    Тесты производительности приведены довольно странные :)

    В первом случае с dd if=/dev/zero - пишутся sparse файлы - то есть почти ничего не пишется :)))

    Во втором случае - с hdparm'ом - в первом запуске заполняется дисковый кэш, а при последующем мы видим что с него мы можем читать довольно быстро, что, в принципе, вполне очевидно.

    Короче, тесты - левые и ни о чем не говорят... :)

     
     
  • 2, slav (?), 04:01, 18/06/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. sparse-файлы будут писаться если сказать seek=xxx. Так, как приведено, будут честно писаться файлы с нулями
     

  • 3, злобный аноним (?), 11:13, 16/04/2008 [ответить]  
  • +/
    помойму автор нифига не понимает значение параметра /proc/sys/vm/swappiness
    хотя может я ошибаюсь :)
     
  • 4, anonymous (??), 23:46, 04/08/2010 [ответить]  
  • +/
    /proc/sys/vm/swappiness
    ...

    бред..
    эти вещи не используются под топиком уж сто лет как

    балалайка очередная

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру