330 likes | 503 Views
А это – красавец Таганрог!. Если не хватит слайда – возьми этот!. Пирс. Хаб. IO. петабайт. Клиент. Инетра. Виджеты. оптимизация. iOS. ТВ. Приставка. Сергей Нечаев Руководитель проектов, компания «Инетра» Специально для отдела МО ВВС ИВМиМГ СО РАН
E N D
Пирс Хаб IO петабайт Клиент Инетра Виджеты оптимизация iOS ТВ Приставка Сергей Нечаев Руководитель проектов, компания «Инетра» Специально для отдела МО ВВС ИВМиМГ СО РАН и Летней школы по параллельному программированию
Последние 5 лет • Программист/архитектор • Биллинг (тарификатор) • Ведущий инженер • Коллцентр (отчетность) • Руководитель проектов • Пирс (все про все)
Файлообменная сеть «Пирс» Омск Томск Нижневартовск Здесь будет ваш город Владивосток Новосибирск Бийск Барнаул Кемерово
На 25000 пользователей онлайн вам понадобится... • IPMI; • 16GB RAM; • 8 CPU @2.5GHz; • 3 Gbit/s network; • 4 HDD; • 2 независимых блока питания. • 8*5000 Bogomips
Приставка «ПирсТВ» • Чипсет Sigma Designs 8655 • 512 Мб оперативной памяти • 2 x 256 Мб системной памяти • ~332 Bogomips
Клиент • Windows, Linux, Mac OS X • ? bogomips • ? окружение
Телевиджеты • Управление пультом • Ограниченный API
Они все такие разныеи все-таки они вместе...
А требования – одинаковые! • Быстрота • Удобство • Автообновление
Среди всех преждевременных бедоптимизация занимает почетное второе место, можете убедиться сами...
Чеклист • Надо ли вообще эту задачу решать? • Надо ли ее решать именно таким способом? • Границы задачи и изменений • Что мы можем сделать: что-то подкрутить или все переделать? • Куда нужно приложить усилия: оценка алгоритмов и профилирование
От чего зависит время работы программы • Cores/nodes bound • CPU bound • Cache bound • Memory bound • IO bound
Оптимизация IO • Уменьшение объема выводимых данных • Уменьшение количества системных вызовов • Использование неблокирующих операций • Уменьшение количества потоков • Буферизация и двойная буферизация • Мультиплексирование • AIO
Бонус 1: когда же чертовы данные запишутся на диск?
Буфер приложения write(fd, buffer,size); Cache buffer OS Буфер ФС fsync(fd); Дисковый кэш Жесткий диск
Бонус 2: когда же чертовы данные будут доставлены получателю
Подтверждение Буфер приложения Буфер приложения write(fd, buffer,size); read(fd, buffer,size); Буфер ОС Буфер ОС сеть
Бонус 2: Борьба с verlihub, 2009гКак мы сделали петабайт! • Раунд 1: poll -> epoll • Раунд 2: Итератор + epoll • Раунд 3: accept в отдельном потоке. • Раунд 4: Параметры стека протокола TCP/IP • Раунд 5: Таймеры • Раунд 6: Хэш без коллизий • Раунд 7: Таймер "кто успел, тот и съел" • Раунд N: пользовательский буфер же!
Спасибо за внимание!удачи на школе!