Рубрика «оптимизация» - 11

Постоянно мы чистим IP-адреса, разбираемся с поставками оборудования, управляем командой, ставим приоритеты разработки и делаем ещё кучу вещей внутри хостинга. Я хочу рассказать про то, как это выглядит с позиции операционного директора.

Есть три уровня управления VDS-хостингом: стратегический, когда вы выбираете, что за продукт вы делаете, какое железо и у кого покупаете и в какие ЦОДы и на каких условиях встаёте, — по сути, это формирование ДНК хостинга. Есть операционный — это рутина вроде «отбить диапазон IP-адресов, который попыталась заблокировать Сони», «опять железо застряло на границе» или «админ заболел, кого поставить в смену», «сложный тикет третьей линии». Например, на уровне ДНК мы решаем, что нужно заменить поддержку на разработку (чтобы клиент мог сам всё решать из личного кабинета), а на уровне тактики уже определяем, как именно это сделать.

Управление хостингом: вид из головы тактика - 1

Даже такая мелочь, как кабель разной длины под рукой — следствие того, что про это заранее кто-то подумал

И есть промежуточный тактический уровень, которым занимается операционный директор. Это не решение конкретной формализованной задачи, но и не глобальная стратегия.

Первое, что нужно видеть, — это чёткая картина всех имеющихся ресурсов. Для этого нужно знать маркетинговые параметры и параметры финансовой модели. То есть нужно знать состояние счетов хостинга на неделю, месяц и полгода вперёд на основе оплат, которые планируются, и расходов, которые планируются. То есть нужно знать процент выхода из строя железа и его ремонты, оплаты сотрудникам, прогнозировать приток и отток клиентов и так далее. Второе — нужно управлять разработкой, то есть выбирать фичи для реализации и находить время для рефакторинга.

Так что добро пожаловать в рубрику «Хостер наконец-то пишет про хостинг в своём корпоративном блоге»… Читать полностью »

В последнее время всё чаще появляются статьи о производительности российских процессоров Эльбрус на различных задачах. Тема криптографии пока что остаётся за кадром, хотя в разное время были упоминания то о высоких возможностях Эльбруса (некий ГОСТ лучше в 9 раз на Эльбрус-4С, чем на Intel Core i7-2600), то о плохой оптимизации компилятора и, соответственно, крайне низкой скорости реализованных алгоритмов (Кузнечик в 100 раз медленнее, чем на Intel?). Предлагаю наконец разобраться, что может Эльбрус, на примере двух ГОСТ алгоритмов симметричного шифрования.

Читать полностью »

Когда старый компьютер лучше нового - 1
© dilbert

Наметилась странная тенденция. Возникает впечатление, что с каждым годом компьютеры замедляются. Количество ядер растёт, софт лагает. Нативных программ всё меньше. Остальные работают через Electron или в браузере. Древний текстовый редактор в DOS'е реагировал на нажатия за 15-20 миллисекунд, а в современном Google Docs задержка 100-150 мс. То же самое с остальными. Вспомните, ведь IRC и аська летали практически в реальном времени. А сейчас монстры Skype и Viber на десктопе загружаются по десять секунд. Спасибо разработчикам Telegram, хоть там нормальные ребята, иначе бы вера в человечество совсем исчезла…

Невольно начинаешь завидовать коллегам, которые сохранили компьютеры и софт двадцатилетней давности, не обновили ни железо, ни программы. У них всё работает как часы, техпроцессы налажены, вёрстка, дизайн, ничего не лагает и не глючит. Никаких дурацких обновлений для предыдущих обновлений.
Читать полностью »

LLVM оптимизирует суммы степеней, например:

int sum(int count)
{
  int result = 0;

  for (int j = 0; j < count; ++j)
    result += j*j;

  return result;
}

генерируя код, вычисляющий результат без цикла (godbolt):

sum(int):
        test    edi, edi
        jle     .LBB0_1
        lea     eax, [rdi - 1]
        lea     ecx, [rdi - 2]
        imul    rcx, rax
        lea     eax, [rdi - 3]
        imul    rax, rcx
        shr     rax
        imul    eax, eax, 1431655766
        add     eax, edi
        shr     rcx
        lea     ecx, [rcx + 2*rcx]
        lea     eax, [rax + rcx]
        add     eax, -1
        ret
.LBB0_1:
        xor     eax, eax
        ret

Также обрабатываются более сложные случаи (godbolt) – то есть оптимизация здесь не просто сравнивает паттерны. В этом посте мы рассмотрим, как выполняется эта оптимизация.
Читать полностью »

Первая часть маленького «срывания покрова» о работе подсистемы виртуальной памяти, связи механизмов mmap, разделяемых библиотек и кэшей вызвало такое бурное обсуждение, что я не смог удержаться от того, чтобы не продолжить исследование на практике

Поэтому, сегодня мы сделаем… Крошечную лабораторную работу. В виде крошечной же программы на C, которую мы напишем, скомпилируем и проверим в деле — со свапом и без свапа.

Читать полностью »

Однажды, в качестве тестового задания на позицию PHP разработчика была предложена задача реализации сервиса проверки номеров паспортов граждан РФ на предмет нахождения в списке недействительных. Текст задания был лаконичным: «Пользовательская база 10 миллионов, время ответа 1 миллисекунда, аптайм 99%».

Входные данные

Для начала посмотрим, в каком виде представлены записи в списке недействительных паспортов. На сайте МВД РФ можно скачать bzip2-архив размером около 460 МБ, внутри которого CSV-файл с двумя колонками PASSP_SERIES,PASSP_NUMBERЧитать полностью »

Жажда тюнинга может завести в неведомые дебри. И, пожалуй, едва ли не самая частая неправильная оптимизация — отключение swap-файла. Если прикинуть частоту, с которой эта ошибка встречается, то, наверное, она входит в негласный top-10 (а может и top-5) самых распространенных, самых бесполезных и самых вредных оптимизаций - потому что swap-файл это одна из самых интересных, сложно понимаемых и недооцененных   сущностей в подсистеме управления виртуальной памятью.

Читать полностью »

FizzBuzz по-сениорски - 1

- Добрый день, я на интервью на позицию старшего разработчика.

- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.

Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно.


Я достаю свой верный лаптоп, и пишу такой Читать полностью »

image

Тайлер Дерден делает домашний рецепт. Скорее всего, органический, на базе глицерина.

Мы тут запустили линейку экокосметики и занялись экологичностью производства. На самом деле, конечно, началось с того, что мы почти втрое сократили потребление воды за счёт кардинальной переделки линии водоподготовки. Вообще-то мы хотели меньше платить за неё городу, но получилось очень экологично.

Как только мы увидели экономию, стали смотреть на другие экологичные решения. И ещё тренды привели к тому, что в любом случае нужно было производить экокосметику либо вообще органик-косметику. Потому что надпись «эко-» даёт минимум +20 % к цене.

И вот тут-то и началось странное противоречие.

Дело в том, что почти всё то, что называют «органик-» и «эко-», на деле при расчёте потребляемых ресурсов на единицу продукции таковым не является. Приведу пару примеров. Вот когда на полках магазинов начал появляться «органический» салат-латук дороже обычного, я была удивлена. Серьёзно, вы возьмёте салат, обильно удобряемый натуральным навозом с ближайшей фермы, когда есть контролируемые гидропонные линии, где он растёт на чистых растворах? Особенно после 2011 года, когда натуральные удобрения заразили резистентным к антибиотикам штаммом кишечной палочки кучу людей в Германии и убили 48 из них.
Читать полностью »

И на Солнце есть пятна - 1

Введение

В предыдущей заметке «Планировщик Windows? Это очень просто» было рассказано о технологии получения дизассемблированного текста ядра операционной системы Windows XP образца 2013 года. Такой текст потребовался для анализа и корректировки кода ядра, что позволило изменить политику планирования потоков в Windows и выполнить одну конкретную задачу с уменьшением времени отклика операционной системы.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js