LINUX.ORG.RU

Избранные сообщения iliyap

Квест длинной в 8 месяцев пройден

Форум — Talks

С сегодняшнего дня я официально стал обладателем статуса UK Global Talent. Принимаю поздравления в этой теме!

 ,

Reset
()

Давайте форкнем иксы

Форум — Talks

Найдём и откатим все вредоносные коммиты от агентов вайланда и будем нормально фиксить все проблемы которые выяснятся с иксами у лоровцев. После чего у вайландоагитаторов исчезнут даже те никчемные аргументы что есть у них сейчас. Что думаете?

 , ,

firkax
()

Использование raid в Linux.

Форум — Admin

Пока пользуешься 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 запишет – одному богу известно…

 , , ,

fk0
()

Раздобыл кросскомпилятор под эльбрус

Форум — Talks

Захотелось что нибудь несложное покомпилировать.

Например хэловорд на си: 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
Согласно докам, -O3 на lcc это не агрессивные оптимизации примерно соответствующие О2, elbrus-v3 это архитектура от Эльбрус-4C и выше, 64бит задействовано по умолчанию.

Для интела получился слишком большой выхлоп 900kb 32k строк (выкладывать безсмысленно)

Для второго 250kb 9k строк (почему такая разница? инклюды не входят?)
собственно выхлоп: https://pastebin.com/WC2CuZ5k есть довольно любопытные участки и операции

Одна условная запись и непонятная магия с регистрами/предикатами и все в одной инструкции, после которой вставлена пустая инструкция (пропуск такта?)
	{
	  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
	}
	{
	}


пут-тег, слияние, istofd (int-single to float-double ?), sxt/scls (???)
$_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
	}
	


Ну и какой то тяжелый цикл с долгими одиночными инструкциями (fdtoidtr - 6 тактов, fmuld - 4 такта, итд. Если я правильно понял как это читать)
$.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
	}
Компилятор взял осюда вполне легально (привет тарищу-майору).
Устанавливаентся вытряхиванием архива в /opt/mcst/ и симлинканьем lcc и l++ куда нибудь в /usr/local/bin

 , ,

uin
()

Ищу корпус, не знаю как правильно назвать

Форум — Linux-hardware

Ищу корпус для самопального домашнего NAS. Плата micro-ITX, диски 3.5", пытаюсь найти что-то с возможностью установки дисков не вскрывая корпус, похожее на: это(желательно с дополнительным местом для диска 2.5"), но не получается. Как такой корпус правильно называется?

 ,

Deleted
()