LibRaw 0.15.0-Alpha3

В LibRaw 0.15.0 Alpha3 возвернуты те улучшения, которые были/есть в 0.14, но которые были временно удалены из девелоперской 0.15-Альфа1-2:
  • Быстрый декодер LJPEG
  • OpenMP-ускорение в AHD/PPG-интерполяторах и в Wavelet Denoise
  • OpenMP-ускорение в вызове raw2image_ex()
  • Патчи для совместимости с LCMS1
В результате на 4-ядерной виртуальной машине dcraw_emu примерно в 1.5 раза быстрее dcraw на обработке моего обычного тестового набора из 339 RAW.

Несмотря на 'alpha' в названии версии, она может считаться стабильной в смысле качества работы. Вот ABI/API пока не устоялось, "есть еще пара идей", оттого и альфа.

А предыдущая альфа-2 сегодня попала в девелоперскую KDE 4.10, можно пользовать оттуда.

Upd: alpha-3 уже тоже в девелоперской KDE.

Об охлаждении

Всем кто беспокоился об охлаждении моего дискового ящика, рассказываю.

На полке в шкафу, дверца приоткрыта, верхний выдув корпуса смотрит на улицу, система активно эксплуатируется (3Tb файлов выливаются с временного стораджа туда):

  • Диски: 35-39 градусов (новые WD RE4 греются меньше и они 35, старые сигейты - 39).
  • Процессор: 40-45
  • RAID-контроллер: 63
Охлаждение: родное (два вентилятора на вдув напротив дисков, один - на выдув из верха корпуса). Добавлен мелкий вентилятор на обдув RAID-а, потому что эта сволочь всегда греется, и без обдува - всегда на пределе, даже в большом холодном корпусе так было.

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

Корпус: Lian Li PC-A04. Впрочем, PC-V354 стоящий в том же шкафе полкой выше - ведет себя примерно так же. Но он побольше немного.

Домашний стораджбокс: производительность iSCSI/SRP, FreeBSD/Linux

Как и обещал, привожу результаты тестирования перформанса нового дискового ящика.

Помня о весенних результатах (когда тестировался доступ по Infiniband к RAM-диску), я не стал тратить много времени на Samba (хотя и померял, см. ниже) и вдумчиво тестировал только iSCSI/SRP варианты.

Hardware

Клиент: Intel i7-2600K без оверклока, 16Gb RAM (DDR3-1600), Windows7. Файрволл выключен, антивирус деинсталлирован (с антивирусом получается весело, но результаты невоспроизводимы).

Сервер: Intel i5-2400 без оверклока, 8GB RAM, Adaptec ASR-5805, 6x Seagate Barracuda ES.2 SAS 1Tb + 2 WD RE4 SATA 1Tb, объединены в RAID-6 (контроллер ругается, что SAS и SATA смешаны в одном томе, а мне плевать).

Сеть: Mellanox Infinihost Ex III (MHEA28-XTC), 10(8) Gbit/s, две карты соединены кабелем.

Сетевые протоколы: iSCSI (по IPoIB), SRP (SCSI RDMA Protocol).

Серверный софт:

  1. Ubuntu Server 12.04, драйвера Infiniband и iscsitarget из поставки, scst из гнезда (trunk), при установке scst ядро патчилось согласно инструкции.
  2. FreeBSD 9.1 Prerelease (свежий cvsup), istgt из портов.
SRP поддерживается только scst, остальные два варианта работали по iscsi.

Клиентский софт: iSCSI initiator из комплекта Win7. Infiniband SRP Initiator из комплекта Infiniband-драйверов openfabrics.org (OFED 3.1).

IPoIB Connected Mode у OFED 3.1 работает только Windows-Windows (в 3.0 работало Windows-Linux). Возможно, причина не в Windows-стороне, а в других драйверах с Linux-стороны, детально не разбирался, жил с MTU 2044.

Adaptec 5805 RAID6 vs ZFS RAIDZ2 performance

Вот, померял на досуге:
  • ASR-5805, 8 дисков в RAID-6, 2Tb-раздел в начале массива. Тестируем гигабайтным блоком, 40 гигов чтения/записи:
    • NTFS (Win7): 651Mb/sec чтение, 651Mb/sec запись.
    • UFS2+SUJ (FreeBSD 9.1): 585Mb/sec запись, 528Mb/sec чтение.
    • EXT4 (Ubuntu Server 11.10): 659/639
  • ZFS RAIDZ2 (FreeBSD 9.1), те же 8 дисков: 490Mb/sec на запись (dd bs=1024M), огорчился и не стал мерять дальше.
Так как эти ~650Mb/sec у меня из Убунты впрямую транслируются в SRP (SCSI RDMA Protocol), то я уже счастлив (подробности чуть позже).

Hardware: Intel i5-2400, мамка на Z77, 8GB RAM, Adaptec ASR-5805, 6 дисков Seagate Barracuda ES.2 1Tb (SAS), два диска WD RE4 1Tb (SATA). Размер блока массива - 256Kb. Никаких моментиков с терабайтниками (вроде 4-к сектора) - нету.

Да, ZFS куда более удобная в использовании: нет многодневных ребилдов массива, можно менять диски в RAIDZ на бОльшие (и после замены всех - емкость вырастет), снэпшоты и все такое. Опять же, Verify так не просаживает производительность, сплошное счастье.

Но мне для дискового ящика от ZFS нужно только тома нарезать - и терпеть на этом фоне разницу в перформансе в 1.3 раза я не готов.

Переваливается через бортик и .... сразу тонет

А вот беру Oracle Solaris 11 для x86 (x64, конечно), прожигаю сидюк, сую в сидюковод, бучусь и вижу гордую надпись "солярис такой-то, копирайт оракл" (первая строчка вывода ядра) и все. Пока обедал - оно так и висело, не грузится.

Машина - обычная современная. i5-2400, чипсет Z77, адаптек 5805, наплатный ether (я согласен с тем, что он не будет работать), UEFI BIOS.

Это нормально или есть какой-то хинт? Что-то повыключать, в бубен дать?

Nexenta - грузится, но 139-я опениндиана мой Infiniband не узнает (и это, вроде, так и должно быть с mem-free адаптером).

Upd: Нашел Solaris Express 11, этот забутилсо

Linux TCP performance Q

А вот у меня в FreeBSD, еще с гигабитных времен написано такое вот, к примеру:
net.inet.tcp.recvbuf_auto=1
net.inet.tcp.recvbuf_inc=131072
net.inet.tcp.recvbuf_max=1048576
net.inet.tcp.sendbuf_auto=1
net.inet.tcp.sendbuf_inc=131072
net.inet.tcp.sendbuf_max=1048576
net.inet.tcp.maxtcptw=102400
Ну и так далее, конкретные слова я брал, кажется, из какой-то презентации Сысоева. И работает, на 10G-сети Samba практически упирается в диски, насколько я вижу.

Вопрос: где взять готовых рецептов для тюнинга Linux? Задача - максимальный перформанс у самбы. А то сейчас смешно: запись 560Mb/sec, а чтение - 235, это же явно сеть не того, а не диски. dd гигабайтными блоками пишет 660 Mb/sec, а читает - 640.

Если существенно: Ubuntu Server 12.04, 3.2.0-29-generic #46-Ubuntu SMP. Intel Core-i5 2400, 8GB RAM.

Про SSD/SandForce

Лабаю тут варез для тестирования скорости NAS в понятных мне терминах. Тестирую на одном из рабочих дисков, а он SSD:

  • Запись ноликов гигабайтными чанками: 225Mb/sec. Единички (битовые) - столько же.
  • Запись псевдорандом-данных, гигабайтными чанками: 75Mb/sec

Холст, масло, OCZ Vertex 2, Sandforce SF-1200.

Ну то есть это все не новость, что у SandForce высокая скорость за счет сжатия, но не в три же раза. Точнее, это я думал, что не в три раза.

Отсюда вытекает естественный вопрос к авторам бенчмарок. Вот всякое Media Content Creation и прочее подобное - они там нолики создают?

P.S. 5 минут потраченных на поиск относительно быстрого псевдорандом-генератора - уже вполне окупились полученным удовольствием.

Update: Intel 520 (ssdsc2cw060a про себя говорит), та же хрень: 380Mb/sec нолики (или единички), 80Mb/sec - рандом.

Update2: OCZ Vertex3 MaxIOPS: 390Mb/sec - нолики, 197Mb/sec - random.

Больше SSD под рукой нету, ноутбуки пожалеем. Пойду теперь чтение тестировать :)

225 и, соответственно, 390 Mb/sec - это я, вполне возможно, уперся в SATA2/SATA3.

О 16-битных цифрозадниках

Наткнулся в ЖЖ Ильи Борга на такой вопрос к нему:
Я уточнить хотел к предыдущему вопросу. В MF цифровых камерах согласно всяким там заявленным характеристикам вроде часто стоит 16 битный АЦП. Это якобы заметно повышает ДД камеры (настолько что как обсуждалось некоторыми товарищами в той ссылке оставляет все DSLR с ихними 14 битами далеко позади). Это действительно так? Какй нибудь сильный выигрыш в тенях от этого получается?
Так вот, вот вам ответ для PhaseOne (компрессированный формат):
// dcraw.c, строчки в районе 1550-й, немножко упрощая
void CLASS phase_one_load_raw_c()
{
....
    for (col=0; col < raw_width; col++) {
      RAW(row,col) = (pixel[col] << 2) - ph1.black + black[row][col >= ph1.split_col];
    }
...
}
Если простыми словами, то в pixel[] содержится распакованая (из хаффмана) строка, дальше значение пиксела сдвигается на два бита (умножается на 4), потом вычитается уровень черного и все это кладется в 16-битный (unsigned short) буфер.

Какой вывод мы можем сделать? А такой, что АЦП - 14-битный, а в младших битах 16-битных значений до вычитания черного были такие вот кругленькие нолики.

В нежатом формате - не так, но нежатый формат я видел только на очень старых задниках, а все что видел нового - жатое. И на P45 и на P65+ и на IQ180 - везде в данных 14 реальных бит.

Справедливости ради, в материалах на сайте PhaseOne ничего про 16-битный АЦП не написано. Все гораздо более обтекаемо, "16-bit OptiColor"...

P.S. Написанное выше - конкретно про PhaseOne. Невозможность имения в этом формате 16-битных RAW-данных вытекает просто из процедуры распаковки. Для других форматов все не так прозрачно.

О сторадж-боксах

Звезды сошлись, руки дошли и я собрал таки стораджбокс, как и собирался уже полгода
Core i5-2300, 8GB RAM, Adaptec 5805, 8x1Tb HDD (6 штук старых Barracuda ES.2 SAS, два новых WD RE4), бутовый SSD, Mellanox Infiniband (2 порта 10G). И даже есть место для еще одного диска, хотя 5" ящики и не обдуваются.

Задача: вынести HDD из рабочей станции (где было 6x1Tb SAS + Adaptec) с целью уменьшения шума под столом (ну и вообще, большей лучшести, к этому ящику же можно больше одной машины подключить). При этом надо оставить избыточность в два диска т.е. RAID6 и/или RAIDZ2. Потому как ситуация, когда один диск вылетает - она случалась уже да.

LibRaw 0.15. Alpha2

По сложившейся традиции, анонсирую LibRaw 0.15 Alpha2.

Изменения относительно альфы-1:

  • Кроппинг и отдельный вызов LibRaw::subtract_black() полностью работоспособны (в альфе-1 это было не так).
  • Исправлена генерация тоновой кривой для lossy DNG, теперь она полностью совпадает с таковой у dcraw (в альфе-1 временами было расхождение в младшем бите).
  • Вместо поканальных максимумов данных (color_data.channel_maximum) сейчас рассчитывается общий максимум (color_data.data_maximum). Для коррекции розовых облаков этого достаточно.
  • Компрессированные файлы PhaseOne распаковываются в raw-буфер полностью "как есть", коррекция по метаданным из файла (замазывание плохих пикселов, вычитание черного) идет на этапе постобработки или в raw2image(). Если вдруг кому нужны полностью неизмененные данные с этих задников - вот они, пользуйтесь.
  • Импортирована свежая dcraw, поддержка Samsung NX-1000 и Sony DSC-RX100.

Спешу сообщить, что ветка 0.14 развиваться далее не будет, если нужна поддержка новых камер, то используйте 0.15. "Альфа" в названии означает на сегодня только нестабильность ABI (и в меньшей степени - API), а в смысле реальной жизни - все (вроде бы) довольно стабильно.

Лето 2012, этап 3: под парусом к монгольским северным оленям

Спрашивали монгольских фотографий? Их есть у меня:
Живут монголы в юртах чумах, вот так:

Pages

Subscribe to blog.lexa.ru: все статьи