2012

Postgresql HA Q

Апгрейдил тут постгрес с 8.4 на 9.1, типа давно пора.

Поднял в соседней виртуальной машине (jail-е, точнее) второй сервер БД, отнес все туда, запустил postgresql-relay, вроде все работает, стал постепенно апгрейдить.

Где-то через час заметил, что PHP-шные (друпальские) сайты - работают (медленно), а перловые - нет. Ну так, из общих соображений, PHP ходит через локальный сокет, а если не вышло - через localhost:5432 (а там у меня relay), а DBI::Pg, если hostname не указали, ходит только в /tmp/.s.PGSQL... и все.

Отсюда вопросы, раз уж всплыла тема:

  1. А есть ли такой постгресовый proxy, который и локальный сокет эмулирует тоже?
  2. А есть ли такой постгресовый proxy, который на psql -l нормально отзывался бы, показывая бы нечто, согласно своей конфигурации?
  3. А есть ли такой простой постгесовый proxy, который умеет делать fallback на запасной сервер? Ну вот был master-slave, мастер сдох, а жить то надо.
Я знаю про PL/proxy, но идея со stored procedures меня совершенно не радует, у меня написанные мной за 15 лет скрипты, у меня написанные совершенно не мной всякие штуки, это банальные 'select a from b where c' и переписывать их нет никаких возможностей.

HD7970 Overclock

Взял в одну руку LuxMark 2.0, в другую - Catalyst Control Center и посмотрел, как оно оверклочится:

  • Позволяемый драйвером максимум т.е. ~20% по частоте процессора (925-1125) и 9% по памяти (1375 - 1500) - совершенно влегкую. Кроме частот - больше ничего не трогал.
  • Попугаи LuxMark растут при этом на 17%
  • Температуру при этом дотянуть до 80-83С удается только минут за 10 (5 запусков бенчмарки подряд), греется мало
  • При такой температуре - вентилятор на половине (автоматическая регулировка).
Для сравнения, GTX480 (ну она горячая по жизни, конечно) нагревается до 90-с-хреном очень быстро и столь же быстро врубает вертушку на полную. Гораздо громче.

Сама по себе бенчмарка, хоть она и многим тестерам уже полюбилась, производит странное впечатление: i7-2600k@4.5 работает на уровне HD5870-HD6970 (~330-350 попугаев на Complex scene). Очень странные цифры, формально у 5870-6970 за два терафлопса в SP и полтерафлопса в DP, тогда как у интеловского горшка ~110 в SP (8x4.5x4) и половина этого в DP. Понятно, что "реальная задача" и вообще реальный мир, но удивительно.

Из LuxMark Database удалось выяснить, что существует какой-то более новый AMD APP runtime (886.1), который процентов на 20 быстрее доступного обычным смертным (851.6). Это хорошая новость, будем ждать.

В очередной раз о линейности RAW

Попался мне в руки даташит на АЦП AD9974, это тот, который ставят в Nikon D3 и вроде бы в D3s - тоже.

А там - вот такая вот картинка:

Это - Integral Nonlinearity т.е. максимальное отклонение от линейности в битах (LSB - Least Significant Bit).

И думаю я следующую мысль:

  1. Уровень 3-4k - это самая что ни есть "5-я зона по Адамсу" т.е. важные полутона.
  2. Уровень сигнала там, соответственно, 11.5-12 бит.
  3. Отклонение от линейности - до 7 бит.
  4. Получается, что "достоверных бит" - 4.5-5 т.е. отклонение от линейности 3-5%.
3-5% - это - довольно много, глаз заметит даже без увеличения контраста. И это - без нелинейности сенсора (не знаю, есть ли она, какая она и т.п.).

А результат будет обычный: если профиль камеры строится по мишени с одной экспозицией, то применять его для кадров с передержкой (ETTR), или с недодержкой следует с аккуратностью.

Вполне вероятно, конечно, что такая нелинейность возникает только при выкрученных на максимум усилителях, а на низких ISO (и коэффициентах усиления) все лучше.

Особого веселья добавляет 6-я страница, где таблица спецификаций, в максимальная INL - 15 бит. Это у 14-битного АЦП.

Update: прочистили моск. Это не битов ошибки, а ошибка, считая в единицах младших разрядов. Т.е. 8 и 15, 3 и 4 бита соответственно. А не 8. Отлегло.

Про HD7970

Договорился с жабой и купил новую грелку для ног.

Вкратце:

  • OpenCL 1.1, поддерживается, работает. Посмотреть что там за код не получается, Kernel Analyzer не умеет это место.
  • Драйвера: под винды есть, бета, в основной Catalyst не включены (и, похоже, войдут не раньше чем в 12.3 т.е. через два месяца т.к. даже в 12.2-preview поддержки 79xx нет). Драйвера под линукс поискал для проформы (мне не надо) - и не нашел.
  • Сцуко, быстрая. Один и тот же OpenCL-код (написанный с оглядкой на NVidia Fermi) работает в-среднем раза в полтора быстрее, чем на GTX480 (single precision). Предыдущая моя ATI-шная карта, HD5870 была в 1.5-2 раза медленнее 480-й нвидии.

    На примере MatrixMultiplication из AMD APP - быстрее в 4 раза (single).

    С double не все так радужно - нужно явно как-то иначе оптимизировать, а может просто драйвера кривые. На всем что попробовал, 7970 получается непринципиально быстрее GTX480, а на каких-то задачах и помедленнее.

  • Сцуко, холодная. Idle temp 44C, прогреть больше чем до 80 счетным кодом не удалось. Наверное, если получше пооптимизироваться, то удастся подогреть больше. Ноги, короче, не греет.
  • Сцуко, тихая. Ну то есть если вручную вентиляторы поставить на 100%, то громкая, как и любая современная видеокарта со штатным охлаждением, но вышеуказанные 80 градусов были при скорости вентилятора чуть больше 2500RPM, это меньше половины (100% - 5400) и на этой скорости она тихая.
Заодно выяснил, что за тот год, что я туда не заглядывал - AMD'шный гайд по OpenCL стал из вообще никакого - довольно интересным чтением. Сижу, читаю. Про Tahiti там пока мало и невнятно, но какой-то раздел по оптимизации уже есть.

P.S. В игры - не играю, ничего не проверял. С картой был купон на DiRT3, но годный до 31 декабря. Смешно, в продаже они появились за неделю до этого....

P.P.S. Lux Render отчего-то вторую карту не видит, как и 5870 не видел. Все прочие разумные тулзы, вроде clinfo и CPU-Z - видят. Прямо хоть в сорцы лезь....

О техническом писательстве

Пишу доку к варезу, первый раз за много лет - для обычного пользователя, сферического в вакууме (все что писал в последние годы - было доками по библиотекам т.е. для программистов).

Нашел в самой задаче крупное логическое противоречие:

  1. С одной стороны: загружать разработчика такой работой - противоречит самой идее разделения труда. Архитекторы должны архитектить, кодеры - кодить, тестеры - тестить, технические писатели - писать мануалы, а специалисты по пуговицам - пришивать пуговицы.
  2. С другой стороны: технический писатель имеет дело с черным ящиком. Он не знает что там внутри, если в программе вдруг что-то нелогично, то не его (писательское) дело против этого протестовать. Ему что дали - про то он и споет.

    У разработчика же глаз замылен - ему в процессе работы весь этот варез уже опротивел, он если добавил новую фичу (сам или архитектор ему наархитектил), то протестирует только ее (в лучшем случае, а в худшем - не тестируя отдаст тестеру), а как она вписывается в общую конструкцию - смотреть не будет т.к. в другие места программы в процессе разработки не полезет.

    А вот пиша (писуя?) документацию - до всех потаенных углов долезешь и все нелогичности внезапно увидишь. У меня список мелких багов образовался за время писания - больший, чем за предыдущие месяц-два.

У меня нет никакого конструктива, понятно что варез большого размера в одно рыло не разработать, а значит разделение труда - необходимо(е зло). Но все вместе наводит на меня тоску: найм техписателя для написания доки автоматически означает ухудшение качества продукта (в хорошем случае - с одновременным улучшением качества документации).

Грелки для ног и гигафлопсы

У желающих пощупать за вымя свежую архитектуру HD79xx есть два разумных выбора:

  • Купить 7970 сейчас (принципиально дешеветь дальше уже не будет, пока не отрастут конкуренты).
  • Подождать месяцок до реального появления в продаже 7950, которая будет примерно на сотку баксов дешевле.

Чтобы оправдать первый вариант (руки то чешутся), вот такой вот расчет:

HD7970

  • 2048 cores x 925 MHz /2 = 947 GFLOP/s (теоретическая, на double).
  • Рекомендованная цена $550 (и в newegg теоретически за столько можно купить) т.е. 1.72 GFLOPS/$
  • Реальная цена в московской рознице 19000, т.е. 0.0499 GFLOPS/руб.
HD7950
  • 1792 cores * 800 MHz /2 = 716 GFLOP/s.
  • Рекомендованая цена $450 т.е. 1.59 GFLOPS/$
  • Какая будет цена в московской рознице - непонятно, но чтобы сравняться с 7970 по гигафлопсам на рупь, цена должна быть 14400, что крайне маловероятно. А 7970 может еще на тысчонку подешеветь спокойно.

Теоретически, конечно, 7950 хорошо гонится, может быть даже лучше чем 7970. Но практика для предыдуших двух серий Радеонов показывает, что многочасовой расчет на штатной частоте (без снижения) - это уже прекрасный результат и всерьез надеяться на оверклок не стоит. Игры в этом месте менее показательны, они пушат лимитсы меньше, чем любовно оптимизированный расчет.

Короче, моя жаба приведенным выше расчетом - удовлетворилась.

Мастера художественного передергивания

Очень трудно удержаться и вообще ничего не писать о политике. Вот опять не получилось.

Вот есть свежий опрос Левады. Всех, понятно, интересуют предстоящие выборы, там эта тема раскрыта двумя способами:

  • Открытый список, хоть Дарта Вейдера вписывай. По этому методу у Путина 37% поддержки (проголосовал бы за него в ближайшие выходные) от населения, у Зюганова ( 2) - 8%. А 41% населения тем или иным способом затруднился с ответом.
  • Закрытый список, проценты только от определившихся: 63% запутина, 15% зазюганова.
Дальше пресса начинает об этом писать. Ну, понятно, что 8 против 37, что 15 против 63 - разные весовые категории, и там и сям 4.5 раза. Поэтому мастера журналистики для Пу берут цифирку из первой таблички (поменьше), а для Зю - из второй (побольше).

Отличились:

Молодцы, че. В борьбе за правое дело и передернуть не грех. А если вдруг Пу наберет over 50 (или 60) в первом же туре (что, согласно результатам вышеупомянутого опроса, вполне вероятно) - массовка будет заранее знать что все подтасовано, ибо соцопросы давали 37%

Пацан сказал - пацан сделал

Собянин пообещал, что лыжни будут проложены в каждом московском парке и зоне отдыха.

И я сегодня такую в нашей роще нашел. Оказывается, их делают по краю пешеходных дорожек, ну и по открытой местности, а я шарился по кустам все время. Ну я, естественно, не настоящий лыжник и в раньшие годы машинную лыжню только в Красногорске встречал, куда ехать был геморой.

Имею сказать, что это совершенно новый класс ощущений, проехал раза в три больше, чем обычно.

10G дома: 6 букв, вторая "и"

Приехали первые (короткие) CX4-кабели и я начал поднимать Infiniband прямо на столе (до сервера эти кабели не дотянутся).

Собственно, исходно я клюнул на IB из соображений поразвлечься. Имею сказать, что развлекся я уже по полной программе, эти $69 себя уже окупили полностью.

Две машины, Win 7 x64 и Ubuntu 11.10.

Ставим драйвера (OFED 3.0 под Windows, драйвера из поставки в Убунте, кажется это Linux OFED 1.4.x), всовываем кабель, запускаем opensm, имеем в первом приближении счастье: PORT_ACTIVE

Во втором приближении - тоже счастье, ibping работает.

В третьем приближении - несчастье. IPoIB - не работает. И Win-Win и Win-Linux ситуация одинаковая, под Win-Win пробовал кроме OFED 3.0, еще и 2.3 и родной Mellanox-овский стек 2.1.2. Во всех случаях ping не пингает, причем из порта (по данным tcpdump) ничего не вылезает.

Присматриваюсь повнимательнее, вижу что вместо LinkWidth 4X имею 1X.

Подземный стук - 2

Продолжение истории начатой здесь

Я не верю, что битая памяь может выражаться в тормозах. В падениях программ, в битых файлах - это пожалуйста. Но тормоза? Впрочем, я не гордый, раз все советуют, запустить memtest несложно.

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

Но ночью приходит такой вот комментарий:

Это звучит как проблема с кешированием памяти. Есть на MacOSX какие-то средства посмотреть конфигурацию MTRR, как memcontrol(8) во FreeBSD ? Когда-то давно очень часто BIOSы забывали правильно сконфигурировать MTRR для страниц выше 4GB.

И вот эта идея, в отличие от битой памяти, не противоречит моим мироощущениям.

Ставлю все 8Gb, запускаю memtest и вот что оказывается:

Pages