Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 4
  • 62

Taka sytuacja:

  • trzy dyski - sda, sdb i sdc. Dysk sdc podłączony przez usb,
  • poprzez rsync przegrywam dane z sdc na sda (rsync -v --progress --inplace /katalog1 /katalog2),
  • obciążenie dysków mierzone dstatem wygląda tak:

 

undefine@uml:~$ dstat  -d -D sda,sdb,sdc --disk-util
--dsk/sda-----dsk/sdb-----dsk/sdc-- sda--sdb--sdc-
 read  writ: read  writ: read  writ|util:util:util
  24k 9574k:2962k   71k:  11M  201k|10.0:1.61:39.2
   0   102M:   0     0 :   0     0 | 100:   0:   0
   0   101M:   0     0 :   0     0 | 100:   0:   0
   0   115M:   0     0 :   0     0 | 100:   0:   0
   0   105M:   0   272k:   0     0 | 100:0.80:   0
   0   107M:   0     0 :   0    12k| 100:   0:4.00
   0    67M:   0    40k:  27M    0 |65.6:   0:28.4
   0  4096B:   0     0 : 105M    0 |1.60:   0:95.2
   0     0 :   0     0 : 109M    0 |   0:   0:95.2
   0    12M: 188k   16k:  86M    0 |10.4:0.40:80.4
   0   102M:   0     0 :   0     0 | 100:   0:   0
   0    96M:   0     0 :   0     0 | 100:   0:   0
   0   110M:   0     0 :   0     0 | 100:   0:   0
   0  7276k:   0     0 : 100M    0 |1.20:   0:90.0
   0     0 :   0     0 : 105M    0 |   0:   0:95.2
   0     0 :   0    32k: 101M   12k|   0:   0:96.0
   0     0 :   0  4096B: 103M    0 |   0:   0:98.4
   0     0 :   0     0 : 105M    0 |   0:   0:98.0
   0     0 :   0    28k: 108M    0 |   0:0.40:90.8
   0    33M:   0     0 : 112M    0 |36.4:   0:95.6
   0   101M:   0     0 : 106M    0 | 100:   0:94.8
   0    95M:   0  4096B:  90M    0 | 100:   0:89.6
   0   104M:   0     0 :  22M    0 | 100:   0:26.8
   0   110M:   0   188k:   0     0 | 100:   0:   0
   0   105M: 100k    0 :   0     0 | 100:   0:   0
   0   112M:   0     0 :   0     0 | 100:   0:   0
   0    96M:   0     0 :   0     0 | 100:   0:   0
   0   100M:   0     0 :   0    12k| 100:   0:2.80
   0    95M:   0     0 :  12M    0 |81.6:   0:14.0
   0     0 :   0     0 : 108M    0 |   0:   0:94.8
   0     0 :   0     0 : 106M    0 |   0:   0:96.8
   0    33M:   0     0 :  57M    0 |32.4:   0:56.8
   0   106M:   0     0 :   0     0 | 100:   0:   0
   0   110M:   0     0 :   0     0 | 100:   0:   0
   0    34M:   0    44k:  63M    0 |29.6:   0:63.2
   0     0 :  20k    0 : 106M    0 |   0:   0:98.0
   0    12k:   0     0 : 110M    0 |4.40:   0:98.8
   0  4096B:   0     0 : 105M   12k|2.40:   0:94.0
   0     0 :   0     0 : 108M    0 |   0:   0:98.4
   0     0 :   0     0 : 102M    0 |   0:   0:93.6
   0    37M:   0    44k:  53M    0 |39.2:   0:48.0
   0    99M:   0    12k:   0     0 | 100:   0:   0
   0   100M:   0     0 :   0     0 | 100:   0:   0

 

Czyli jak widać - system albo dane odczytuje albo zapisuje. Przez co operacja trwa dwa razy dłużej niż robiłby to równolegle.

Dlaczego tak się dzieje i co można z tym zrobić by zoptymalizować prędkość przegrywania?

Andrzej_Dopierała
  • Zapytał
  • @ Andrzej_Dopierała | 07.02.2016
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169

Odpowiedź (1)

  • 0

Jeśli to zachowanie nadal będzie widoczne, jeśli skasujemy opcję --inplace, to już całkiem trudno powiedzieć, co się tam dzieje. Normalnie rsync tak się nie zachowuje. Do sprawdzenia ewentualnie czy nie ma tam zbyt OGROMNEJ ilości małych plików, czy te dyski fizycznie  się nie blokują (może kontroler nie wyrabia). Co porabia procesor w tym czasie, czy wisi na IO, czy nic nie robi?

Samo --inplace może (nie musi) dawać takie efekty przy relatywnie dużym transferze i powolnym procesorze.

 

  • Odpowiedział
  • @ | 09.10.2016
  • TRENER ALTKOM AKADEMII