Квест длинной в 8 месяцев пройден
С сегодняшнего дня я официально стал обладателем статуса UK Global Talent. Принимаю поздравления в этой теме!
С сегодняшнего дня я официально стал обладателем статуса UK Global Talent. Принимаю поздравления в этой теме!
Найдём и откатим все вредоносные коммиты от агентов вайланда и будем нормально фиксить все проблемы которые выяснятся с иксами у лоровцев. После чего у вайландоагитаторов исчезнут даже те никчемные аргументы что есть у них сейчас. Что думаете?
Пока пользуешься raid-1 и не волнует скорость, глубина всех труднострей плохо понятна. Ситуация сейчас такая:
raid10 280 МБ/с запись, 380 МБ/с чтение.
dm-integrity + raid10 200 МБ/с запись, 280 МБ/с чтение.
dm-integrity + raid5 50 МБ/с запись, чтение даже не смотрел
(синхронизация падает до 20МБайт/с)
raid5 какая-то приличная скорость, сравнимая с ZFS,
не помню деталей, такая конфигурация не интересна
ZFS < 140 МБ/с запись, синхронизация
с первой космической скоростью.
Неустраивает что медленно. Диски самые дешевые, SMR, на 5600об/с. Что не устраивали критику – сравнил с CMR на 7200 и не увидел заметной разницы, может процентов на 20 по скорости записи больших блоков и раза в два при записи кучи мелких. То что «raid на SMR не работает» – в значительной степени миф. Может на дисках WD и не работает, в данном случае Seagate.
Интересует в первую очередь скорость записи больших файлов, а не работа в качестве сервера СУБД (тогда CMR).
Во вторую очередь интересует контроль целостности записанных данных, ввиду понимания, что на сколько-нибудь большом объёме единичные ошибки это уже как правило, а не редкая случайность.
В чём проблема: применение dm-integrity сильно замедляет. Сравнивал без bitmap’а и без журнала, понимаю, они тормозят ещё больше. Конкретно raid5 замедляется катастрофически, и хуже того, я попробовал всё то же самое сделать на SSD и получил те же 50МБ/сек!!! Это полное фиаско!
Проблема не в дисках, проблема в самом линуксе! Скорость записи дисков порядка 160..80МБ/сек (снижается к концу диска) у SMR и 180..80 у CMR. SMR хуже ведут себя только на массе мелких записей, не фатально, раза в два всего.
Более того, я был шокирован, когда увидел, что изначально конструкция dm-integrity + raid10 работает быстрей, чем raid10 без ничего. Потыкался и сменил io scheduler с mq-deadline на bfq, скорость немного подрасла, и самое главное всё стало на свои места. raid10 без ничего всё же заметно быстрей, чем с dm-integrity. Но для raid5 ничего не помогает, он просто медленно пишет и совершенно непонятно где затык.
ZFS конечно всем хороша, но скорость записи у ней ограничена скоростью одного диска и через это не перепрыгнешь. Честно говоря, смотря на цифры raid10 без integrity понимаю, что хочу видеть что-то подобное, может процентов на 10 хуже, но никак не в разы.
Кроме того, в ZFS неудобно с шифрованием (zfs поверх четырех разделов dm-crypt – это какой-то идиотизм). В смысле с шифрованием все ок, но совершенно не ок с возможностью подмены данных (с обычным dm-crypt это невозможно, все развалится).
Кроме того, в ZFS нет writeback кеша на ssd. Только writethrough, что ограничивает скорость записи дисками (и нужно много памяти для самой zfs). Хотелось бы сверху всего иметь dm-cache.
Всё же видимо integrity и raid5 в linux катастрофически не совместимы и проще смириться и забыть оставшись с raid10. Может кто посоветует, как поднять скорость записи. Как я понимаю, в значительной степени проблема в том, что linux пишет прерывисто, когда работает с dm-integrity, есть лаг между окончанием предыдущей записи и началом следующей. При записи на сырой диск с помощью dd, при работе raid10 без integrity, такой проблемы нет. Странно, казалось бы проблема носит массовый характер, но в интернете мало об этом пишется. Каких-то толковых советов что подкрутить не нашел. Пробовал readahead увеличивать – без толку (правильно, тут же чистая запись), пробовал у raid5 stripe cache size увеличивать, ускоряет но лишь немного, и как я писал, смена io scheduler на bfq тоже несколько ускоряет.
В btrfs raid5 вроде ж не работает. Может стоит попробовать raid10 в btrfs? Там же вроде встроенная проверка целостности данных?
Может быть, имеет смысл разделить всё на два «раздела». Быстрый raid10 без integrity для часто изменяемых данных и медленный ZFS для остального. Но так неудобно.
Да и неудобство бэкапов с ext4. Снапшота нет, что там dump запишет – одному богу известно…
Захотелось что нибудь несложное покомпилировать.
Например хэловорд на си: https://pastebin.com/KFNHABjm (генератор цветового uid из строк)
Компилировал с такими опциями:g++ -S -O2 -march=x86-64 -std=c++11 test.cpp
l++ -S -O3 -mcpu=elbrus-v3 -std=c++11 test.cpp
$ g++ --version
# g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
$ l++ --version
# lcc:1.20.17:Mar-3-2016:e2k-generic-linux.cross:i386-linux
# gcc (GCC) 4.4.0 compatible
{
ct %ctpr3 ? ~%pred0
std,2 %dg13, %dr12, %dr11 ? %pred0
pass %pred0, @p0
pass %pred1, @p1
landp @p0, ~@p1, @p4
pass @p4, %pred2
landp @p0, @p1, @p5
pass @p5, %pred1
}
{
}
$_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPKcSsEEEEPcT_S6_RKSaIcESt20forward_iterator_tag:
{
setwd wsz = 0x13, nfx = 0x1
setbn rsz = 0x3, rbs = 0xf, rcur = 0x0
disp %ctpr1, $.L4337; ipd 2
getsp,0 _f32s,_lts1 0xfffff960, %dr5
addd,1 0x0, [ _f64,_lts2 $_GLOBAL_OFFSET_TABLE_@ABS ], %dr3
puttagd,2 %dr0, 0x0, %dr17
adds,3,sm 0x0, 0x0, %r21
addd,4,sm 0x0, 0x0, %dr20
puttagd,5 %dr1, 0x0, %dr16
}
...
{
merges,0 %g16, %g21, %g16, %pred0
}
...
{
setwd wsz = 0x20, nfx = 0x1
setbn rsz = 0x3, rbs = 0x15, rcur = 0x0
disp %ctpr1, $.L2085; ipd 2
addd,0 0x0, _f64,_lts1 0x20ff2000000000, %dg16
sxt,1 0x6, %r5, %dg17
scls,2 0x9, 0x9, %r1
}
...
{
call %ctpr3, wbs = 0x1c ? %pred0
istofd,0,sm %r1, %dr1
}
$.L1779:
{
loop_mode
nop 3
faddd,1,sm %dr1, %db[2], %db[0]
}
{
loop_mode
nop 3
fmuld,1,sm %dr7, %db[0], %db[0]
}
{
loop_mode
nop 5
fdtoidtr,1,sm %db[0], %db[1]
}
{
loop_mode
sxt,2,sm 0x6, %b[1], %db[1]
}
{
loop_mode
nop 3
idtofd,1,sm %db[1], %db[1]
}
{
loop_mode
nop 3
fsubd,1,sm %db[0], %db[1], %db[0]
}
{
loop_mode
nop 3
fmuld,1,sm %db[0], %db[1], %db[0]
}
{
loop_mode
nop 5
fdtoidtr,1,sm %db[0], %db[1]
}
{
loop_mode
sxt,2,sm 0x6, %b[1], %db[1]
}
{
loop_mode
nop 3
idtofd,1,sm %db[1], %db[1]
}
{
loop_mode
nop 3
fsubd,1,sm %db[0], %db[1], %db[0]
}
{
loop_mode
nop 2
fmuld,1,sm %db[0], %dr5, %db[0]
ldb,2,sm %dr6, %dr2, %b[3]
addd,5,sm %dr2, 0x1, %dr2
}
{
loop_mode
getfs,2,sm %b[3], %r4, %b[2]
}
{
loop_mode
nop 2
istofd,0,sm %b[2], %db[0]
faddd,1,sm %db[1], %db[0], %dr1 ? %pcnt0
}
{
loop_mode
alc alcf=1, alct=1
abn abnf=1, abnt=1
ct %ctpr1 ? %NOT_LOOP_END
}
Ищу корпус для самопального домашнего NAS. Плата micro-ITX, диски 3.5", пытаюсь найти что-то с возможностью установки дисков не вскрывая корпус, похожее на: это(желательно с дополнительным местом для диска 2.5"), но не получается. Как такой корпус правильно называется?