Задать вопрос

Почему тормозит raid1?

Есть сервер (core-i7 4 core + ht, 16GB ram), на котором 2 hdd Toshiba (DT01ACA300; SATA 3.0, 6.0 Gb/s; 3TB) объеденены в программный raid1.
На сервере установлена ubuntu 14.10 x64 и mysql 5.5.
Делаю:
mysql> load data infile '/home/evgeny/file1.csv' into table testtable fields terminated by ';'

CSV весит около гигабайта, там около 20 млн строк.

В итоге диск загружается на 80-95%, а скорость записи всего 4000-5000 kB/s:
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               1.00     7.50    3.50   39.00   576.00  4988.00   261.84     1.22   28.80   78.86   24.31  21.22  90.20

Время добавления файла в таблицу = 20-30 минут.

При добавлении второго такого же файла в эту же таблицу время добавления уже около часа.

Вопрос: можно ли как то оптимизировать время добавления файла в таблицу и почему так тормозит рейд? SMART показывает что с дисками все нормально.
  • Вопрос задан
  • 3629 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
gbg
@gbg Куратор тега Железо
Любые ответы на любые вопросы
Что пишет
cat /proc/mdstat
Зеркало синхронно?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Hatifnatt
@Hatifnatt
Евгений Evgenx:
10737418240 bytes (11 GB) copied, 306.82 s, 35.0 MB/s

Очень низкая скорость линейной записи/чтения для современного диска, если конечно он не загружен другими операциями. Кроме того этот тест не всегда отражает быстродействие самих дисков, если у вас достаточно оперативной памяти, то все или часть данных попросту "осядут" в кеше.
Более точные данные можно получить используя dd подобным образом
dd if=/dev/zero of=tempfile bs=1M count=10240 conv=fdatasync

или
dd if=/dev/zero of=tempfile bs=1M count=10240 oflag=dsync
подробнее https://romanrm.net/dd-benchmark

Мои результаты для дисков WDC WD2000FYYZ-01UL1B1 в софт-рейде
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
      1936077760 blocks super 1.2 [2/2] [UU]

dd if=/dev/zero of=tempfile bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 38.7747 s, 277 MB/s

dd if=/dev/zero of=tempfile bs=1M count=10240 conv=fdatasync
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 88.2362 s, 122 MB/s

dd if=/dev/zero of=tempfile bs=1M count=10240 oflag=dsync
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 105.152 s, 102 MB/s


Попробуйте отключить barriers если у вас достаточно надежная система и сбоев питания не ожидается.
mount -o remount,barrier=0 /my/mount/point
это может существенно увеличить быстродействие дискового ввода - вывода, например в моем случае отключение барьеров позволило уменьшить IOwait на гипервизоре с SSD дисками с 5-20% до 0-1%, вот еще пример teleogistic.net/2014/08/disable-ext4-barriers-for-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы