Benchmarking ...
Man kann viel über Tools lernen, wenn man nachvollziehbare Messungen macht.
Für mich hat sich als sinnvoll erwiesen, fünf Mal zu messen. Die beste und die schlechteste Messung wird gelöscht ("Ausreisser") und aus den verbleibenden drei Messungen nehme ich den Mittelwert.
Die Messungen für den Artikel dd vs. fallocate vs. truncate ... habe ich mit diesem Skript gemacht:
Dabei habe ich das Kommando eingesetzt, was ich gerade getestet habe.
Interessant ist, wie sich die Blocksizes bei dd auf die wirkliche Schreibperformance auswirken ... nämlich minimal. Hier kommen nur die mittleren der fünf Werte, die komplette Liste der Messwerte lässt sich hier sehen.
Für mich hat sich als sinnvoll erwiesen, fünf Mal zu messen. Die beste und die schlechteste Messung wird gelöscht ("Ausreisser") und aus den verbleibenden drei Messungen nehme ich den Mittelwert.
Die Messungen für den Artikel dd vs. fallocate vs. truncate ... habe ich mit diesem Skript gemacht:
#!/bin/bash
set -o errexit
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd count=20971520 ; sync)'
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd bs=1024 count=10485760 ; sync)'
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd bs=10240 count=1048576 ; sync)'
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd bs=20480 count=524288 ; sync)'
# echo 'sync ; time (fallocate -l 10G 10gig.fallocate ; sync)'
echo 'sync ; time (truncate -s 10G 10gig.truncate ; sync)'
for i in $(seq 1 5); do
sync ; time (truncate -s 10G 10gig.truncate ; sync)
rm 10gig.truncate
done
set -o errexit
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd count=20971520 ; sync)'
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd bs=1024 count=10485760 ; sync)'
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd bs=10240 count=1048576 ; sync)'
# echo 'sync ; time (dd if=/dev/zero of=10gig.dd bs=20480 count=524288 ; sync)'
# echo 'sync ; time (fallocate -l 10G 10gig.fallocate ; sync)'
echo 'sync ; time (truncate -s 10G 10gig.truncate ; sync)'
for i in $(seq 1 5); do
sync ; time (truncate -s 10G 10gig.truncate ; sync)
rm 10gig.truncate
done
Dabei habe ich das Kommando eingesetzt, was ich gerade getestet habe.
Interessant ist, wie sich die Blocksizes bei dd auf die wirkliche Schreibperformance auswirken ... nämlich minimal. Hier kommen nur die mittleren der fünf Werte, die komplette Liste der Messwerte lässt sich hier sehen.
sync ; time (dd if=/dev/zero of=10gig.dd count=20971520 ; sync)
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 36.6231 s, 293 MB/s
real 2m2.442s
user 0m2.772s
sys 0m33.771s
#####
sync ; time (dd if=/dev/zero of=10gig.dd bs=1024 count=10485760 ; sync)
10485760+0 records in
10485760+0 records out
10737418240 bytes (11 GB) copied, 20.5773 s, 522 MB/s
real 1m55.923s
user 0m0.974s
sys 0m19.529s
#####
sync ; time (dd if=/dev/zero of=10gig.dd bs=10240 count=1048576 ; sync)
1048576+0 records in
1048576+0 records out
10737418240 bytes (11 GB) copied, 7.79126 s, 1.4 GB/s
real 1m53.523s
user 0m0.123s
sys 0m7.667s
#####
sync ; time (dd if=/dev/zero of=10gig.dd bs=20480 count=524288 ; sync)
524288+0 records in
524288+0 records out
10737418240 bytes (11 GB) copied, 6.87154 s, 1.6 GB/s
real 2m8.122s
user 0m0.068s
sys 0m6.808s
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 36.6231 s, 293 MB/s
real 2m2.442s
user 0m2.772s
sys 0m33.771s
#####
sync ; time (dd if=/dev/zero of=10gig.dd bs=1024 count=10485760 ; sync)
10485760+0 records in
10485760+0 records out
10737418240 bytes (11 GB) copied, 20.5773 s, 522 MB/s
real 1m55.923s
user 0m0.974s
sys 0m19.529s
#####
sync ; time (dd if=/dev/zero of=10gig.dd bs=10240 count=1048576 ; sync)
1048576+0 records in
1048576+0 records out
10737418240 bytes (11 GB) copied, 7.79126 s, 1.4 GB/s
real 1m53.523s
user 0m0.123s
sys 0m7.667s
#####
sync ; time (dd if=/dev/zero of=10gig.dd bs=20480 count=524288 ; sync)
524288+0 records in
524288+0 records out
10737418240 bytes (11 GB) copied, 6.87154 s, 1.6 GB/s
real 2m8.122s
user 0m0.068s
sys 0m6.808s
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Kai am :
Dirk Deimeke am :