ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx-1.2.5



On 11/14/12 21:44, Maxim Dounin wrote:
Но, честно говоря, я так подозреваю, что даже цифры выше - это,
скорее всего, далеко не просто стоимость инструкций, а результат
выбрасывания нужных данных из кеша процессоров из-за обновления
счётчика (читай: cache line flush'ился, и route entry при других к
ней обращениях приходилось перегружать из памяти).  В этом месте
nginx поступает как правильно, и счётчики держит отдельно от
всего, да ещё и с отступом в cache line между ними.

Сама по себе операция изменения счетчика, разумеется очень дешевая. Весь эффект, из за необходимости синхронизации кэшей CPU. После того, как счетчик инкрементирован он сначала попадает только в локальный кэш CPU. Если потом код работающий на другом CPU захочет инкрементировать этот же счетчик, он должен будет подождать, пока первый CPU запишет эти данные в main memory, и потом прочитть их оттуда. Для того, чтобы узнать сосотяние кэша (нужно ли ждать и сколько ждать) используются разные протоколы для обеспечения cache coherency, но почти все плохо масштабируются с увеличенимем числа кэшей. В итоге при достаточно большом числе процессоров и ядер даже простой инкремент общего на много CPU счетчика может стать узким местом.

В случае nginx наверно измеримого эффекта не будет - счетчики инкрементируются относительно редко, на один http запрос выполняется много разной работы.

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

--
 Anton Yuzhaninov

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.