Olympus продовжує зростати швидше, ніж ми очікували, як і користувальницький контент. Чим більше користувачів, тим більше повідомлень в чаті. У липні ми оголосили про 40 млн повідомлень у день, в грудні оголосили про 100 млн, а в середині січня подолали 120 млн. Ми відразу вирішили зберігати історію чатів вічно, так що користувачі можуть повернутися в будь-який момент і отримати доступ до своїх даних з будь-якого пристрою. Це багато даних, потік і обсяг яких наростає, і всі вони повинні бути доступними. Як ми це робимо? Cassandra!

Читати далі →

0bbc5c5a3b67408cb9b0b8cf75cd9139.gif

Magento працює повільно. Іноді дуже повільно. У цій замітці ми зібрали переклад двох статей про послідовному прискоренні інтернет-магазині на базі Magento: від першого до останнього байта.
Прискорення завантаження сторінок спрощено складається з двох доданків: «час до першого надісланого байти» (TTFB – time to first byte) і час рендеринга в браузері. Перед тим, як перейти до оптимізації фронтенда, потрібно постаратися поліпшити показник TTFB.

Читати далі →

image
зрештою, я повинен був до цього прийти. Коли я опублікував статтю «Я написав швидку хеш-таблицю», а потім ще одну — «Я написав ще більш швидку хеш-таблицю». Тепер я завершив роботу над самою швидкою хеш-таблицею. І під цим я розумію, що реалізував самий швидкий пошук порівняно з усіма хеш-таблиць, які мені вдалося знайти. При цьому операції вставки та видалення також працюють дуже швидко (хоча і не швидше конкурентів).
Я використовував хешування за алгоритмом Robin Hood з обмеженням максимальної кількості наборів. Якщо елемент повинен бути на відстані більше Х позицій від своєї ідеальної позиції, то збільшуємо таблицю і сподіваємося, що в цьому випадку кожен елемент зможе бути ближче до своєї бажаної позиції. Схоже, такий підхід дійсно добре працює. Величина Х може бути відносно невелика, що дозволяє реалізувати деякі оптимізації внутрішнього циклу пошуку по хеш-таблиці.
Якщо ви хочете тільки спробувати її в роботі, то можете завантажити звідси. Або прокрутіть вниз до розділу «Вихідний код і використання». Хочете подробиць — читайте далі.
Читати далі →



На конференції HighLoad++ 2016 Іван Круглов розповів про те, як сервіс Booking.com розвивав свій пошук — одну з центральних функцій системи інтернет-бронювання готелів.

Всім привіт! Я Ваня, пишу на Perl — можете мені поспівчувати. [Легкий сміх у залі і зі сцени.]

Гаразд. По-серйозному, мене звуть Іван Круглов, я з компанії Booking.com з міста Амстердам. Там я працюю останні 4 роки, де останні півтора року я працював у команді, яка робить наш пошук краще.

Почати я хочу трохи здалеку. Ось з цієї фрази:

Читати далі →


Побудова інфраструктури CDN пов'язано з великою кількістю технічних питань: від вибору обладнання і установки його в датацентрах до користувальницького інтерфейсу для взаємодії з можливостями мережі. Ми наводимо переклад статті з блогу Fastly, де команда розповідає про дуже цікавих кастомних рішень для роботи з мережею (значна частина яких незалежно була використана в інфраструктурі Айрі).

В результаті оптимізації інфраструктури вдалося добитися мінімального часу простою при відмові якого-небудь вузла і великий масштабованості системи.

Читати далі →

Думаю багато хто вже чули про реалізований московськими розробниками Байкал Електронікс процесор Байкал-Т1 — з двома ядрами Imagination Technologies P5600 MIPS 32 r5 і набортним 10GbE. Байкал виявився першим, хто реалізував в кремнії це ядро.

Терзав цей процесор я з перервами більше року — але нарешті під катом можу поділитися результатами.
Читати далі →

enter image description here
Привіт. Мене звуть Марко (я системний програміст в Badoo). І я уявляю вашій увазі переклад поста Go, який мені видався цікавим. Go дійсно лають за товсті бінарники, але при цьому хвалять за статичну лінковку і за зручність викладки єдиного файлу. Якщо на сучасних серверах товсті бінарники – не проблема, то на вбудованих системах – ще як. Автор описує свою історію боротьби з ними в Go.
Читати далі →

Вимірювання пропускної здатності вузьких місць за часом подвійного проходу пакета
За всіма параметрами, сьогоднішній інтернет не може переміщати дані так швидко, як повинен. Більшість користувачів стільникового зв'язку в світі відчувають затримки від кількох секунд до кількох хвилин: публічні точки WiFi в аеропортах і на конференціях ще гірше. Фізикам і кліматологів потрібно обмінюватися петабайтами даних з колегами по всьому світу, але вони стикаються з тим, що їх ретельно продумана многогигабитная інфраструктура часто видає всього декілька мегабіт в секунду на трансконтинентальних лініях. [6]

Ці проблеми виникли через вибору архітектури, який був зроблений при створенні системи регулювання заторів TCP у 80-ті роки — тоді втрату пакетів вирішили інтерпретувати як «затор». [13] Еквівалентність цих понять була справедливою для того часу, але тільки із-за обмежень технології, а не за визначенням. Коли NIC (контролери мережевих інтерфейсів) модернізували з мегабітних до гігабітних швидкостей, а мікросхеми пам'яті — з кілобайт до гігабайт, до зв'язок між втратою пакетів і заторами стала менш очевидною.

У сучасному TCP регулювання заторів по втраті пакетів — навіть в найбільш досконалої технології такого роду CUBIC [11] — основна причина цих проблем. Якщо буфери вузьких місць занадто великі, то система регулювання заторів по втраті пакетів тримає їх повними, викликаючи надмірну мережеву буферизацію. Якщо буфери занадто маленькі, то система регулювання заторів по втраті пакетів невірно інтерпретує втрату пакета як сигнал затору, що веде до зниження пропускної здатності. Рішення цих проблем вимагає альтернативи регулювання заторів по втраті пакетів. Для знаходження цієї альтернативи слід розібратися, де і як виникають затори.

Читати далі →

пілотної частини я розповів про завдання як можна докладніше. Розповідь вийшов довгим і безпредметним — в ньому не було ні одного рядка коду. Але без розуміння завдання дуже складно займатися оптимізацією. Звичайно, деякі техніки можна застосовувати, маючи на руках тільки код. Наприклад, кешувати обчислення, скорочувати розгалуження. Але мені здається, що деякі речі без розуміння завдання просто ніколи не зробити. Це і відрізняє людину від оптимізуючого компілятора. Тому ручна оптимізація все ще відіграє величезну роль: у компілятора є тільки код, а у людини є розуміння завдання. Компілятор не може прийняти рішення, що значення "4" досить випадково, а людина може.

Нагадаю, що мова піде про оптимізацію операції ресайза зображення методом згорток у реально існуючій бібліотеці Pillow. Я буду розповідати про тих змінах, що я робив кілька років тому. Але це не буде повторення слово-в-слово: оптимізації будуть описані в порядку, зручному для оповідання. Для цих статей я зробив в репозиторії окрему гілку від версії 2.6.2 — саме з цього моменту і буде йти розповідь.
Читати далі →



Андрій Аксьонов ділиться труднощами у підготовці слайдів для доповіді. Це — розшифровка виступу Highload++.



Якщо бачите цей слайд – я не дуже встиг картинки. Прийшов Бунін, переконався, що у нього доповідач не пропав і поставив підлий питання. Ми заздалегідь готуємо конференцію, 1 вересня прийом доповідей. Я теж хотів заздалегідь підготуватися. Вчора в 6 вечора почав малювати слайди для іншого доповіді, а для цього в 11, тому ось так.

Доведеться робити чистий стендап – а слухати вухом, але це, напевно, на краще, тому що можна спокійно тупити в телефон.

Що означає чистий стендап? Ніякого коду абсолютно, я спеціально намагався мінімізувати кількість рядків коду в презентації, правда пара все одно протекла. Ніяких революційних міркувань ні на які теми. Ну і чистий быдлятский гумор.

Можливо це федерально злочин і мене ФСБ замете відразу після того, як я зі сцени вийду. Ризикнемо, заодно познайомлюсь, поїхали.

Про що доповідь?

Читати далі →