Bon, trêve de plaisanteries : comme je n'avais conservé que cette valeur de 4096 pour bs, j'ai refait quelques tests pour voir.
Voici tout d'abord les caractéristiques de mon disque :
$ sudo hdparm -I /dev/sda
/dev/sda:
ATA device, with non-removable media
Model Number: TOSHIBA MK6476GSX
Serial Number: 523CPCBJT
Firmware Revision: GS001C
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
Standards:
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 1250263728
Logical Sector size: 512 bytes
Physical Sector size: 512 bytes
device size with M = 1024*1024: 610480 MBytes
device size with M = 1000*1000: 640135 MBytes (640 GB)
cache/buffer size = 8192 KBytes
Form Factor: 2.5 inch
Nominal Media Rotation Rate: 5400
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: 128
DMA: sdma0 sdma1 sdma2 mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* 64-bit World wide name
* IDLE_IMMEDIATE with UNLOAD
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Native Command Queueing (NCQ)
* Phy event counters
* Idle-Unload when NCQ is active
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Read/Write Long (AC1), obsolete
* SCT Write Same (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
174min for SECURITY ERASE UNIT. 174min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000039402700e3c
NAA : 5
IEEE OUI : 000039
Unique ID : 402700e3c
Checksum: correct
$
J'ai testé des valeurs de bs allant de 512 octets à 8 Mio, en montant par puissances de 2 : 512 B, 1 K, 2 K, 4 K, …, 2 M, 4 M, 8M (selon la notation de man dd : K=Kio, M=Mio).
J'ai copié 1 Gio à partir de /dev/zero dans un fichier de mon home, ce qui n'est peut-être pas pareil que d'écrire directement sur le disque entier ou une partition, comme j'avais fait la fois précédente.
En tout cas, je trouve plutôt 16 K comme valeur optimale pour bs cette fois-ci, même si ça ne change pas fondamentalement les ordres de grandeur.
Voici le graphe de ces tests :

Et tant qu'à faire, voici la commande utilisée pour faire ces tests :
cp_size=$((1024*1024*1024))
for ((i=0;i<=14;i++)); do
bs=$((512*(2**i)))
count=$((cp_size/bs))
echo "bs = $bs"
dd if=/dev/zero of=/home/user/f bs=$bs count=$count
echo
done