Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-17 Пенетрантность Alexey Pechnikov
Hello!

On Monday 17 August 2009 15:08:25 Alexey Lobanov wrote:
 Понижение приоритета процесса бэкапа (man nice) тоже 
 немножко поможет.

Совсем уж костыль, ведь программ, подобных rdiff-backup на 
десктопе может быть множество. На сервере игра с приоритетами 
могла бы помочь, поскольку множество запускаемых там программ 
строго ограничено, но на сервере нет подобных проблем, поскольку 
система, приложения и бэкапы обычно на разных дисках.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-14 Пенетрантность Alexey Pechnikov
Hello!

On Friday 14 August 2009 14:48:57 Stanislav Maslovski wrote:
 Коллеги, кончайте бред нести уже. Load average в линукс считается
 проще некуда. В сети масса информации на эту тему. Лень искать в гугл
 - загляните в собственную копию сырцов ядра (если таковая имеется).
 Там related кода на три строчки.

Это не ответ. Из сказанного вами совершенно не следует, что нужно подкрутить, 
чтобы LA при запуске rdiff-backup не превышал, скажем, 4. Какой смысл приводить
некую формулу, смысл которой вы не знаете? Если знаете, то абстракцией какой
модели она является и какие параметры следует менять? 

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-14 Пенетрантность Alexey Pechnikov
Hello!

On Friday 14 August 2009 15:46:15 Stanislav Maslovski wrote:
  Это не ответ. Из сказанного вами совершенно не следует, что нужно 
  подкрутить, 
  чтобы LA при запуске rdiff-backup не превышал, скажем, 4.
  Какой смысл приводить некую формулу, смысл которой вы не знаете?
 
 Смысл каждого члена в этой формуле был ясно обозначен. Что в ней
 непонятного? Если ты не доверяешь моей компетенции, почему бы тогда
 тебе самому не заглянуть в сырцы?
 
  Если знаете, то абстракцией какой модели она является и какие параметры 
  следует менять? 
 
 Exponentialy weighted moving average. Параметр (он один - q) приведен
 в моем исходном письме.

Шутить изволите?
В приведенном вами выражении количество процессов TASK_RUNNING и 
TASK_UNINTERRUPTIBLE определяется характеристиками и параметрами планировщика 
ввода-вывода (в данном случае известно, что по io перегрузка). Вы можете из 
приведенного 
вами выражения вывести зависимость от параметров sysctl?

 
 PS:
 Вообще, в других рассылках на подобные необоснованные ничем нападки
 принято отвечать одной строкой:
 
 ПНХ.
Без комментариев.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-14 Пенетрантность Alexey Pechnikov
Hello!

On Friday 14 August 2009 16:44:43 Alexey Lobanov wrote:
 А смысл? Как я понимаю, надо не количество попугаев LA подкрутить для 
 отчётности перед начальством, а реально улучшить поведение системы под 
 нагрузкой. И в каком смысле улучшить - известно только хозяину системы :-)
 
 Узким местом при бэкапе обычно является дисковая подсистема. Радикальный 
 метод - увеличивать количество дисковых контроллеров и физических 
 дисков, чтобы разумным образом распараллелить доступ на разные каналы 
 ATA/SATA и поменьше времени тратить на дёргание голов с раздела на 
 раздел. /tmp держать в одной банке, данные в другой, результат бэкапа в 
 третьей, и т.п.

Да дело-то было в том, что на ноуте при распаковывании бэкапа система
в ступор впадает. При том, что в ядро уже и реалтайм-ветку почти влили
(у меня 2.6.30, в следующем ядре вроде как все патчи уже обещали включить),
а запуск одной-единственной программы вызывает невозможность работать...
(Распаковать на сервере и скачать не могу, ибо доступ в инет отнюдь не 
мегабиты).

На серваках, кстати, с винтами 10-тысячниками таких проблем нет, из чего 
следует,
что линукс-ядро просто спихивает свою работу на контроллер диска.
(И бэкап делается на отдельном диске, но нельзя же этого от ноута требовать!)

 
 А для начала я бы попробовал осознать и перебрать разные типы i/o 
 schedulers.
Почему-то мне кажется, что под мои совершенно типичные задачи на ноуте 
должно подходить стандартное ядро. То есть хотелось бы на это надеяться.
Хотя, может быть, дефолтовый шедулер как раз под многодисковые сервера и 
написан.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-14 Пенетрантность Alexey Pechnikov
Hello!

On Friday 14 August 2009 17:54:31 Ed wrote:
  Не стоит также забывать, что в линуксе куча kernel threads в добавок к
  процессам в userspace.
 
 угу. вот детали и интересуют :)

У меня под нагрузкой размножаются процессы ядра pdflush.
Просмотр дисковой активности с помощью
blktrace -d /dev/sda -o - | blkparse -i - 
показывает, что именно эти процессы и портят всю картину. 
Но зачем ядро стартует целую пачку процессов и не проверяет
 их состояние, мне не ясно.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-14 Пенетрантность Alexey Pechnikov
Hello!

On Friday 14 August 2009 18:25:58 Иван Лох wrote:
  Почему-то мне кажется, что под мои совершенно типичные задачи на ноуте 
  должно подходить стандартное ядро. То есть хотелось бы на это надеяться.
  Хотя, может быть, дефолтовый шедулер как раз под многодисковые сервера и 
  написан.
 
 Это не так ;-} В-общем, ядро в поставке Debian ориентировано на максимальную 
 производительность, а в жертву приносится низкая латентность. Именно поэтому
 запись на диск не прерывается. Установите  CONFIG_PREEMPT при компиляции ядра
 и ситуация изменится.

Спасибо, буду пробовать.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-14 Пенетрантность Alexey Pechnikov
Hello!

On Friday 14 August 2009 19:35:04 Stanislav Maslovski wrote:
 Ввод-вывод порождает массу прерываний, это во-первых. Во-вторых,
 процесс, занятый активным вводом-выводом, проводит изрядное количество
 времени в kernel mode, что при CONFIG_PREEMPT_NONE=y (дефолт в
 дебиане) означает, что ему будет доставаться больше CPU-time, чем
 остальным процессам (а их, активируемых по таймеру, например, в
 дестопной системе немало, плюс еще kernel threads). В результате имеем
 то, что имеем.

А в других дистрибутивах как? И что с ними происходит в серверном режиме?..

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-13 Пенетрантность Alexey Pechnikov
Hello!

On Thursday 13 August 2009 13:08:08 Konstantin Matyukhin wrote:
  Вопрос: что же за параметр такой LA и как он подсчитывается на самом деле?
 Это среднее количество процессов в очереди ожидающих освобождения ЦПУ,
 диска или сети
 за определенный промежуток времени.
 

Если активных процессов = 3, то их среднее количество тоже = 3. Откуда LA ~ 
15?

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-13 Пенетрантность Alexey Pechnikov
Hello!

On Thursday 13 August 2009 14:16:08 Konstantin Matyukhin wrote:
 2009/8/13 Alexey Pechnikov pechni...@mobigroup.ru:
  Если активных процессов = 3, то их среднее количество тоже = 3. Откуда LA 
  ~ 15?
 Я не писал активных, я писал ожидающих.

Смотрим htop:
Tasks: 221 total, 2 running

Как видим, 2 активных процесса. Откуда взялись 15 ожидающих?

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-13 Пенетрантность Alexey Pechnikov
Hello!

On Thursday 13 August 2009 15:21:22 Artem Chuprina wrote:
 Тебе ж сказали: using OR WAITING FOR.  rdiff-backup жрет ресурсы так,
 что другим процессам приходится ждать их освобождения достаточно долго,
 чтобы их (этих процессов) накопилось немало.
 
 Я полагаю, что ждать им приходится скорее дискового ввода-вывода, нежели
 процессора.

rdiff-backup запускается с точно таким же приоритетом, как и прочие 
пользовательские 
процессы. Что же означает его прожорливость? Как я понимаю, процессы с равным 
приоритетом получают равные ресурсы. С какой стати очередь ожидающих процессов 
стопорится, совсем не ясно.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-13 Пенетрантность Alexey Pechnikov
Hello!

On Thursday 13 August 2009 19:11:07 Павел wrote:
  rdiff-backup запускается с точно таким же приоритетом, как и прочие 
  пользовательские
  процессы. Что же означает его прожорливость? Как я понимаю, процессы с 
  равным
  приоритетом получают равные ресурсы. С какой стати очередь ожидающих 
  процессов
  стопорится, совсем не ясно.
 
 Вот именно поэтому, только не стопорится, а накапливается.

Судя по тому, что ноут на этой задаче виснет минут эдак на 5 - 10, скорее, 
стопорится.
Понятно, планировщик ввода-вывода не является справедливым, но чтоб настолько...
А менять дефолтовый планировщик на другой - это шаманство какое-то, никаких 
четких метрик 
нет, все на уровне шаманских система станет отзывчивее или вы заметите 
ощутимую разницу.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-13 Пенетрантность Alexey Pechnikov
Hello!

On Thursday 13 August 2009 20:01:57 Artem Chuprina wrote:
  AP rdiff-backup запускается с точно таким же приоритетом, как и прочие
  AP пользовательские процессы. Что же означает его прожорливость? Как
  AP я понимаю, процессы с равным приоритетом получают равные ресурсы. С
  AP какой стати очередь ожидающих процессов стопорится, совсем не
  AP ясно.
 
 Шедулер не решает задачу, которую невозможно решить :-) Шедулер устроен
 проще - процессы с равным приоритетом, _готовые к использованию
 процессора_, получают равные шансы отработать очередной CPU slice.  А
 если процесс застрял внутри write(2), потому что запросов к диску дцать,
 и его запрос сейчас в очереди надцатый, а шина одна - он попадает в LA.
 Равно и если к очередному слайсу их оказалось трое желающих на два
 процессора (что, в общем, нормально, если один бурно работает - слайс
 штука не такая уж маленькая) - двум дадут, а третий попадет в LA.

А мне казалось, современные планировщики ввода-вывода на порядок сложнее
описанного :-) Правда, после перехода на ядра 2.6.x, перестал отслеживать 
алгоритмы
планировщиков и т.п., поскольку просто какая-то лавина изменений идет. Но знаю,
что планировщиков ввода-вывода несколько и среди них есть весьма навороченные.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/


Re: Что такое Load average и почему для одного процесса он может быть 1

2009-08-13 Пенетрантность Alexey Pechnikov
Hello!

On Thursday 13 August 2009 23:57:36 Artem Chuprina wrote:
 Более-менее преимущество имеет как раз rdiff-backup, потому что он
 работает с диском более-менее последовательно, и именно его запросы
 удобнее всего компоновать вместе.

Так это задача контроллера диска. На серверных винтах, кстати, подобных 
проблем с вводом-выводом значительно меньше, поскольку контроллеры дисков 
оптимизируют очередь команд (и притом не заставялют приложения ждать 
подолгу). Но с такими винтами даже винда лучше работает (sic!), т.е. от ОС тут 
мало что зависит. На десктопных дисках ситуация похуже, а с ноутбучными 
совсем плохо... Но, возможно, есть и другие варианты решения проблемы
(кроме смены диска, причем для ноута разве что на SSD, которые, увы, пока явно
недоделанные выпускают). Существует множество параметров настройки 
буферов ввода-вывода, но я с этим слабо знаком, а найти завершенные рецепты
не удалось - интересно, почему...

Best regards, Alexey Pechnikov.
http://pechnikov.tel/