Discussione:
Stranezza Nvme
(troppo vecchio per rispondere)
infar
2021-06-03 17:05:03 UTC
Permalink
Buongiorno Mondo,
Non riesco a spiegarmi il comportamento di dd su un SSD Nvme.
Se lancio il comando verso una partizione ext4 (tra l'altro criptata):

dd if=/dev/nvme0n1p4 of=/dev/null bs=16M iflag=direct status=progress

ottengo un flusso a 1.5 GB/s.
Se invece lancio il comando verso una partizione Ntfs:

dd if=/dev/nvme0n1p2 of=/dev/null bs=16M iflag=direct status=progress

Ottengo solo 400 MB/s.
La domanda è:
Ma dd non è indipendente dal filesystem sottostante?

Ultima prova, se punto al device anziché alle partizioni,
if=/dev/nvme0n1 ottengo velocità diverse in base alla posizione
virtuale: 400 MB/s per i primi giga, dove sta Ntfs, per poi salire in
concomitanza dell'inizio della partizione ext4.

Il 'disco' - rettangolare :) - è un economico Crucial P2 Ct500p2ssd8 da
500GB provato su diverse macchine con piastre diverse, da Asus a MSI a
Asrock ecc. con identici risultati.
Il kernel è 5.10.0-0.bpo.5-amd64 #1 SMP Debian 5.10.24-1~bpo10+1
(2021-03-29) x86_64 GNU/Linux e già che ci siamo le cpu sono tutte Ryzen
5 3600.

Cosa ignoro? Grazie.
Pseudonimo Stilton
2021-06-07 07:39:16 UTC
Permalink
Post by infar
Buongiorno Mondo,
Non riesco a spiegarmi il comportamento di dd su un SSD Nvme.
dd if=/dev/nvme0n1p4 of=/dev/null bs=16M iflag=direct status=progress
ottengo un flusso a 1.5 GB/s.
dd if=/dev/nvme0n1p2 of=/dev/null bs=16M iflag=direct status=progress
Ottengo solo 400 MB/s.
Ma dd non è indipendente dal filesystem sottostante?
Ma il supporto NTFS non dimora nell' 'userland'?
Non è, per questo, meno performante?
Post by infar
Ultima prova, se punto al device anziché alle partizioni,
if=/dev/nvme0n1 ottengo velocità diverse in base alla posizione
virtuale: 400 MB/s per i primi giga, dove sta Ntfs, per poi salire in
concomitanza dell'inizio della partizione ext4.
Il 'disco' - rettangolare :) - è un economico Crucial P2 Ct500p2ssd8
da 500GB provato su diverse macchine con piastre diverse, da Asus a
MSI a Asrock ecc. con identici risultati.
Il kernel è 5.10.0-0.bpo.5-amd64 #1 SMP Debian 5.10.24-1~bpo10+1
(2021-03-29) x86_64 GNU/Linux e già che ci siamo le cpu sono tutte
Ryzen 5 3600.
Cosa ignoro? Grazie.
infar
2021-06-07 13:20:43 UTC
Permalink
Post by Pseudonimo Stilton
Ma il supporto NTFS non dimora nell' 'userland'?
Non è, per questo, meno performante?
Certo ma dd legge brutalmente i blocchi dal disco, senza nemmeno sapere
cosa c'è dentro; difatti si può tranquillamente clonare con dd un disco
criptato senza averne la chiave...

Che il disco sia in NTFS o EXT4 o ZFS a dd interessa poco.
Per questo non capisco che succede.
Piergiorgio Sartor
2021-06-07 15:49:20 UTC
Permalink
On 07/06/2021 15.20, infar wrote:
[...]
Post by infar
Certo ma dd legge brutalmente i blocchi dal disco, senza nemmeno sapere
cosa c'è dentro; difatti si può tranquillamente clonare con dd un disco
criptato senza averne la chiave...
Che il disco sia in NTFS o EXT4 o ZFS a dd interessa poco.
Per questo non capisco che succede.
Dovresti provare, se possibile, a
rimescolare le partizioni.

Cioe` formattare tutto, per esempio,
ext4 e ri-testare con "dd".

Non dovrebbe cambiare assolutamente
niente, dato che, come hai giustamente
fatto notare, "dd" lavora a livello di
block device e non di FS.

Ma tant'e`...

bye,
--
piergiorgio
Pseudonimo Stilton
2021-06-08 19:16:38 UTC
Permalink
Post by infar
Post by Pseudonimo Stilton
Ma il supporto NTFS non dimora nell' 'userland'?
Non è, per questo, meno performante?
Certo ma dd legge brutalmente i blocchi dal disco, senza nemmeno
sapere cosa c'è dentro; difatti si può tranquillamente clonare con dd
un disco criptato senza averne la chiave...
...vero
Post by infar
Che il disco sia in NTFS o EXT4 o ZFS a dd interessa poco.
Per questo non capisco che succede.
Provato a diminuire bs?
Pare che +bs non corrisponda necessariamente a +throughput
Leonardo Serni
2021-06-09 13:06:30 UTC
Permalink
Post by infar
Il 'disco' - rettangolare :) - è un economico Crucial P2 Ct500p2ssd8 da
500GB provato su diverse macchine con piastre diverse, da Asus a MSI a
Asrock ecc. con identici risultati.
Mi viene in mente una cosa, ma è abbastanza campata in aria.

Le SSD non sono un monoblocco, sono ottenute mettendo in serie vari banchi di
memorie statiche. Poi quando leggi dal "disco SATA" gli indirizzi LBA vengono
tradotti in offset lineari e questi vengono ulteriormente tradotti in rank ed
offset all'interno dei vari banchi; l'hostadapter invia l'appropriato comando
di selezione bank, e viene fatta la lettura.

Supponiamo che per qualche motivo uno o più dei bank siano più lenti vuoi per
leggerli, vuoi per selezionarli, vuoi per allinearli.

Per scoprirlo suppongo si debba fare così:

- usare dd per leggere sempre dallo stesso device di base (/dev/nvme0n1)
- con offset diversi

Caso "bank più lenti a selezionare": dopo un certo offset vedo una variazione
di velocità marcata e, intorno al punto critico, dipendente da bs.

Caso "bank più lenti a leggere": come sopra, ma indipendente da bs.

Nei casi sopra, è chiaro che se una partizione è al di qua e una al di là del
punto di transizione, leggere e scrivere su due partizioni diverse otterrà un
risultato diverso. E non ci sono soluzioni :-(

Caso "allineamento memoria a cura del mostro del botro": non vedo variazioni,
o veramente molto poche, con offset multipli di un paio di megabyte. Ma se l'
offset è pari a un multiplo di un paio di megabyte PIU' MEZZO KILOBYTE (o una
quantità analogamente piccolina), patapùnfete. In questo caso potrei lasciare
stare tutto com'è, perché l'unico ad accòrgisene sarà dd; però, per sicurezza
e visto che, tanto, è gratis, potrei riformattare le partizioni assicurandomi
che inizino tutte a un offset esattamente multiplo di un paio di MB.

In realtà questo allineamento loffio si vede pure su alcuni HDD, solo che non
è a un paio di MB ma più prosaicamente a 2-4-8 Kb, e _NORMALMENTE_ (e dipende
dal file system) non fa grossa differenza. Certo se uno ha il FS che lavora a
blocchi di 8K, e ha il disco disallineato con offset di 4K, la differenza c'è
caso che la senta assai, rispetto alla partizione shiftata di 4K più in là.

Leonardo
--
"You all presumably know why" :-) :-(
infar
2021-06-11 09:21:16 UTC
Permalink
Post by Leonardo Serni
Mi viene in mente una cosa, ma è abbastanza campata in aria.
Ho la sensazione che c'entri il controller del disco.
Testando un disco vergine (ovvero rasando al suolo un disco con 'nvme
format') dd fornisce un risultato di 2.5 GB/s anzichè 1.5 GB/s.

Installandogli quindi una distribuzione qualsiasi e rifacendo il test,
si ottiene appunto 1.5 GB/s.

Ipotizzo che il controller di un disco vergine non acceda nemmeno alle
celle di memoria ma restituisca immediatamente zero.

Per il resto non ho ipotesi degne di questo nome. Brutta cosa l'ignoranza...
Continua a leggere su narkive:
Loading...