Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re[2]: кол-во воркеров и отдача статики
"причина по которым один процесс будет считывать с диска файлы в N
потоков" заключается в сериализации доступа к файлам, дабы разгрузить
головку жёсткого диска.
Так вот я и хочу сказать что на самом деле никакой особой сериализации
не получится. Вот обслуживает один процесс 1000 пользователей.
Тогда процесс сначала с одного файла отошлет _маленький_ потом дернет
головкой
и пойдет считывать(вернее считывать будет ядро) очередной мелкий кусок,
потом
еще раз дернет головкой и так далее. Т.е. винт все равно будет жестко
задерган
вне зависимости от того один процесс его дергает или не один. Будет ли с
учетом
этого реальная разница в скорости в зависимости от воркеров?
Точнее я бы тут хотел услышать предложения как сделать нормальный бенчмарк
этого
дела. Интересно еще как на это разные io shedulers и NCQ влияют но это уже
другой разговор.
Про /proc/sys/vm/drop_caches я помню, как создать кучу файлов на винте я
знаю а вот
как сэмулировать кучу полоьзователей которые скачивают разные файлы (еще и
с разных позиций
хотелось бы) не знаю.
вы минимум упускаете что:
- дисков бывает больше чем один
- процессу надо делать не только операции io
да практика показывает что 1 воркера очень часто недостаточно.
Очень хорошее замечание. Собственно я-то как раз и хочу сказать что:
а) один воркер не всегда является оптимальным выбором
б) особой разницы от кол-ва воркеров быть не должно в силу того что
я описал выше(на однодисковых операциях).
в) если дисков больше чем один, точнее если разные разделы на разных дисках
то я бы развесил сайты вообще на разные nginx чтобы каждый nginx дергал (и
ждал)
только свой диск. Возможно я в этом не прав, буду еще думать.
//Черный Плащ
|