LINUX.ORG.RU
ФорумTalks

Я думал они слагаемые, а они оказались уменьшаемое и вычитаемое...


0

2

Понадобилось тут недавно даные с SSD на HDD перенести. Ну и копирование где-то 30-ти с небольшим гигабайт заняло около 10 минут. По истечении некоторого времени данные были возвращены обратно, на SSD, но тут вдруг выяснилось что копирование это (с HDD) было очень неспешным. И растянулось где-то на час. До этого предпологал что в таких случаях (копирование с SSD на HDD и на оборот) разницы быть не должно. А оказалось разница есть и существенная.

Есть какие нибудь дивано-теоретические умозаключения: почему так происходит?


слишком мало входящих данных
что за фс там и сям?
какова степень фрагментации?
что за железки?

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

фс ext4. мать asus m4a77d. проц phenom 1075. 6GB озу. ssd - ну я это пробовал и на vertex 3 120GB и на corsair neutron gtx 120 GB.

qwerta
() автор топика

ВНЕЗАПНО, скорость чтения с HDD меньше. А если хард ещё и медленный и фрагментированный, то и того меньше.

Deleted
()

Расскажи как копировал, чем, какие fs были, с какими параметрами смонтированы?

Если с помощью dd и не указывал параметр bs, то по умолчанию копировало блоками по 512 байт. Для SSD такой доступ на запись в один поток (от dd) самый медленней, медленнее чем для HDD.

santiago
()
Ответ на: комментарий от qwerta

Какая скорость в одну и в другую сторону в МБ/c и колличество iops. Можешь посмотреть во время копирования в выводе iostat -xm 2. Можешь даже сюда его запостить.

santiago
()

Для переноса файловых систем с диска на диск я бы использовал LVM. Разницы быть не должно, ибо линейное чтение/запись.

s9gf4ult ★★
()
Ответ на: комментарий от santiago

Расскажи как копировал, чем, какие fs были, с какими параметрами смонтированы?

Ну загрузился под LiveCD. Создал на HDD пустой раздел на 50 ГБ ext4. Примонтировал с умолчательными опциями раздел на HDD и раздел на SSD и с помощью cp -a скопировал данные.

qwerta
() автор топика
Ответ на: комментарий от qwerta

В обратную сторону с HDD на SSD тоже с помощью 'cp'? Раздел на SSD пересоздавал или просто все файлы с него удалил?

А если перед копированием очистить раздел и натравить на подмонтированый раздел fstrim?

Какой у тебя дистрибутив, ядро? Каким livecd пользовался?

santiago
()

Поздравляю, твой SSD очень тормозной на запись.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от santiago

Вот данные iostat -xm 2 и время копирования.

SSD -> HDD

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 0,00 0,50 125,00 0,00 59,70 974,22 67,58 609,50 600,00 609,54 7,97 100,00

sdb 0,00 0,00 86,50 0,00 0,36 0,00 8,60 0,36 4,25 4,25 0,00 4,18 36,20

sda 0,50 758,50 1091,00 150,50 46,05 3,55 81,82 1,34 1,09 0,36 6,38 0,25 31,00

avg-cpu: %user %nice %system %iowait %steal %idle 3,11 0,00 17,38 12,68 0,00 66,83

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 3002,50 0,50 189,50 0,00 33,97 366,23 8,51 89,83 112,00 89,77 2,85 54,20

sdb 0,00 0,50 157,50 12,00 0,70 0,07 9,35 0,36 2,09 2,25 0,00 2,10 35,60

sda 0,00 0,00 3251,50 0,00 24,05 0,00 15,15 0,77 0,24 0,24 0,00 0,18 57,80

avg-cpu: %user %nice %system %iowait %steal %idle 3,18 0,00 18,83 10,79 0,00 67,20

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 3563,00 0,50 272,00 0,00 33,28 250,13 22,65 45,34 20,00 45,38 1,82 49,60

sdb 0,00 8,50 102,00 1,00 0,42 0,04 9,17 0,40 3,88 3,63 30,00 3,61 37,20

sda 0,00 443,00 2758,00 21,00 55,30 1,81 42,09 0,85 0,31 0,28 4,29 0,22 62,20

avg-cpu: %user %nice %system %iowait %steal %idle 3,97 0,00 12,16 16,39 0,00 67,48

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 33,00 0,00 156,00 0,00 57,95 760,72 109,59 572,91 0,00 572,91 6,41 100,00

sdb 0,00 0,00 389,50 0,00 1,71 0,00 8,97 0,61 1,56 1,56 0,00 0,98 38,00

sda 0,00 456,00 610,00 5,00 55,94 1,80 192,28 0,40 0,65 0,56 10,80 0,44 26,80

real 9m38.096s

user 0m14.589s

sys 3m27.621s

HDD -> SSD

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 0,00 539,00 0,00 64,65 0,00 245,63 1,60 2,97 2,97 0,00 1,82 98,00

sdb 0,00 9,00 0,00 1,00 0,00 0,04 80,00 0,02 20,00 0,00 20,00 20,00 2,00

sda 0,00 2,50 0,00 140,50 0,00 61,13 891,10 9,50 60,97 0,00 60,97 1,78 25,00

avg-cpu: %user %nice %system %iowait %steal %idle 2,36 0,00 5,30 12,12 0,00 80,22

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 1,50 547,00 4,00 66,65 0,02 247,80 1,66 3,02 2,99 6,00 1,80 99,40

sdb 0,00 0,50 1,00 8,00 0,00 0,07 16,89 0,01 1,11 4,00 0,75 0,67 0,60

sda 0,00 16,50 0,00 156,50 0,00 74,38 973,32 9,23 64,98 0,00 64,98 1,97 30,80

avg-cpu: %user %nice %system %iowait %steal %idle 3,10 0,00 4,78 12,07 0,00 80,05

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 10,00 543,00 1,00 58,46 0,04 220,25 2,21 4,06 4,01 28,00 1,80 98,00

sdb 0,00 0,00 15,50 0,00 0,06 0,00 8,00 0,21 13,68 13,68 0,00 0,52 0,80

sda 0,00 2,50 0,00 121,50 0,00 56,86 958,45 8,45 69,53 0,00 69,53 1,91 23,20

avg-cpu: %user %nice %system %iowait %steal %idle 3,60 0,00 4,80 11,58 0,00 80,02

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sdc 0,00 0,00 756,50 0,00 36,36 0,00 98,44 1,60 2,12 2,12 0,00 1,17 88,20

sdb 0,00 6,50 0,00 6,00 0,00 0,08 26,67 0,02 3,33 0,00 3,33 3,33 2,00

sda 0,00 223,00 0,00 79,50 0,00 37,16 957,38 5,46 68,63 0,00 68,63 1,96 15,60

real 48m59.573s

user 0m14.813s

sys 3m42.990s

Копирование велось командой time cp -a. Система стоит на диске sdb. SSD это sda , HDD на который копировали sdc. Размер обоих разделов 86GB.

rsync -aP

ssd->hdd

sent 31321863958 bytes received 9396611 bytes 29655712.80 bytes/sec

total size is 31279674576 speedup is 1.00

real 17m35.924s

user 10m51.129s

sys 8m29.960s

hdd->ssd

sent 31321848024 bytes received 9396611 bytes 9421513.95 bytes/sec

total size is 31279674576 speedup is 1.00

real 55m24.991s

user 11m14.654s

sys 8m55.173s

Ну господа диванные аналитики. Какие будут будут соображения на этот счет?

qwerta
() автор топика
Ответ на: комментарий от Satou

Вы забываете про кеш. В случае с SSD можно всё что влезет сначала прочитать в кеш (прочитать достаточно быстро), а потом писать на HDD. И копирование может реально закончится уже после того как отработает cp. В случае с HDD прочитать быстрее, чем записать не получится и влияние кеша минимальное.

KivApple ★★★★★
()
Ответ на: комментарий от Deleted

ВНЕЗАПНО, скорость чтения с HDD меньше. А если хард ещё и медленный и фрагментированный, то и того меньше.

Радуют меня ЛОРовские аналитеги.

ВНЕЗАПНО скорость записи на HDD всегда меньше скорости чтения. А записал он их за 10 минут.

Лечи интуицию.

zgen ★★★★★
()
Ответ на: комментарий от Deleted

ВНЕЗАПНО, скорость чтения с HDD меньше.

Да ладно ?! Это с каких пор ?

AS ★★★★★
()

на SSD, но тут вдруг выяснилось что копирование это (с HDD) было очень неспешным.

Предполагаю, что на ssd TRIM не отработал (или не успел, или совсем не включен). В итоге, при записи на SSD, шёл ещё и процесс очистки ячеек.

AS ★★★★★
()
Ответ на: комментарий от AS

Здесь перед записью на SSD было полное уничтожение данных, потом вручную подана команда fstrim, раздел отмонтирован и смонтирован с опцией discard. Так что мимо.

qwerta
() автор топика
Ответ на: комментарий от wwwsevolod

Н-да?!!1 Ну ка покажи мне ту перемычку которая включает trim на ssd. А скриптик

#!/bin/bash
#
# Test if TRIM is working on your SSD. Tested only with EXT4 filesystems
# in Ubuntu 11.10 and Fedora 16. This script is simply an automation of
# the procedures described by Nicolay Doytchev here:
#
# https://sites.google.com/site/lightrush/random-1/checkiftrimonext4isenabledandworking
#
# Author: Dorian Bolivar <dbolivar@gmail.com>
# Date: 20120129
#

if [ $# -ne 3 ]; then
        echo
        echo "Usage: $0 <filename> <size> <device>"
        echo
        echo "<filename> is a temporary file for the test"
        echo "<size> is the file size in MB"
        echo "<device> is the device being tested, e.g. /dev/sda"
        echo
        echo "Example: $0 tempfile 5 /dev/sda"
        echo
        echo "This would run the test for /dev/sda creating a"
        echo "temporary file named \"tempfile\" with 5 MB"
        echo
        exit 1
fi

FILE="$1"
SIZE=$2
DEVICE="$3"

# Create the temporary file
dd if=/dev/urandom of="$FILE" count=1 bs=${SIZE}M oflag=direct
sync

# Get the address of the first sector
hdparm --fibmap "$FILE"
SECTOR=`hdparm --fibmap "$FILE" | tail -n1 | awk '{ print $2; }'`
                                                                                                                                 
# Read the first sector prior to deletion                                                                                        
hdparm --read-sector $SECTOR "$DEVICE"                                                                                           
echo                                                                                                                             
echo "This is a sector of the file. It should have been successfully read"                                                       
echo "and show a bunch of random data."                                                                                          
echo                                                                                                                             
read -n 1 -p "Press any key to continue..."                                                                                      
                                                                                                                                 
# Delete the file and re-read the sector                                                                                         
rm -f $FILE                                                                                                                      
sync                                                                                                                             
echo                                                                                                                             
echo "File deleted. Sleeping for 120 seconds before re-reading the sector."                                                      
echo "If TRIM is working, you should see all 0s now."                                                                            
sleep 5                                                                                                                          
hdparm --read-sector $SECTOR "$DEVICE"                                                                                           
echo                                                                                                                             
echo "If the sector isn't filled with 0s, something is wrong with your"                                                          
echo "configuration. Try googling for \"TRIM SSD Linux\"."                                                                       
echo                                                                                                                             
                                                                                                                                 
exit 0 

показал что trim включен.

qwerta
() автор топика
Ответ на: комментарий от zgen

вот он кстати вероятнее всего прав: при копировании на хдд ср «завершился» сразу после окончания записи в кеш, т.е. по сути было чтение с ссд, и запись в озу (правда, все в дисковый кеш не влезло, поэтому так долго). при обратной операции было чтение с хдд и запись в озу (правда, ссд все-равно успевал сразу записывать кеш). логично что чтение с хдд сильно медленнее. обрати внимание на длины очереди и %util хотя-бы в выводе iostat'а, а также на то, что при копировании хдд -> ссд скорость записи на ссд фактически равна скорости чтения с хдд, при том что именно хдд используется на полную.

val-amart ★★★★★
()

Есть какие нибудь дивано-теоретические умозаключения: почему так происходит?

Обработка множества мелких файлов полна сюрпризов. Хочешь скорости - жми в большие архивы без сжатия и копируй на носители.

Napilnik ★★★★★
()
Ответ на: комментарий от qwerta

перед записью на SSD было полное уничтожение данных, потом вручную подана
команда fstrim, раздел отмонтирован и смонтирован с опцией discard.

С discard надо было монтировать _до_ полного уничтожения данных. Вот если руками был fstrim запущен... А он, кстати, заметное время работал, или как ?

AS ★★★★★
()
Ответ на: комментарий от AS

А он, кстати, заметное время работал, или как ?

Очень даже заметное.

qwerta
() автор топика

вот читай: http://emulek.blogspot.ru/2013/04/ssd.html

в двух словах — скорость записи на флешки очень низкая. Немного можно записать быстро, но вот большое количество пишется долго по многим причинам.

drBatty ★★
()
Ответ на: комментарий от zgen

ВНЕЗАПНО скорость записи на HDD всегда меньше скорости чтения. А записал он их за 10 минут.

ВНЕЗАПНО линейная скорость определяется только скоростью вращения блинов, не важно, чтение это или запись. Для записи диски никто не тормозит, у них ОДНА скорость. На диске написана какая именно.

drBatty ★★
()
Ответ на: комментарий от AS

Предполагаю, что на ssd TRIM не отработал (или не успел, или совсем не включен). В итоге, при записи на SSD, шёл ещё и процесс очистки ячеек.

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

drBatty ★★
()
Ответ на: комментарий от qwerta

перед записью на SSD было полное уничтожение данных, потом вручную подана команда fstrim, раздел отмонтирован и смонтирован с опцией discard. Так что мимо.

TRIM НЕ чистит диск. Она только сообщает, что надо чистить.

drBatty ★★
()
Ответ на: комментарий от zgen

при чём тут теория? Можешь проверить. Только отключи всякие кеши и т.д. Да и вообще всю ФС. Мы же про девайс говорим?

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.