View Single Post
Staro 27.04.2025., 15:40   #127
tomek@vz
Premium
Moj komp
 
tomek@vz's Avatar
 
Datum registracije: May 2006
Lokacija: München/Varaždin
Postovi: 4,811
Citiraj:
Autor mkey Pregled postova
OK, konačno došlo moje na red. Kao izvor za kopiranje sam napravio fajlove random (binarnog) sadržaja i smjestio ih na NVME A:

1. 100k fajlova od 1 KiB
2. 10k fajlova od 4 KiB
3. 1k fajlova od 10 KiB
4. 1k fajlova od 1 MiB

Test sam napravio u 4 koraka, ponovio par puta s ponovljivim rezultatima:

1. rsync direkt u RAM preko TMPFS
2. rsync na BTRFS RAM particiju, bez kompresije
3. rsync na BTRFS RAM particiju, sa kompresijom
4. rsync na BTRFS particiju s kompresijom na NVME B

Ukupno za kopiranje 112k fajlova ukupne veličine 1.19 GiB (na kraju vidim da je tu bilo i nešto više fajlova, ali mislim da nije bitno s obzirom da samo to i tako napravio nasumično).

1. kopiranje direkt u RAM: 189 MiB/s
2. kopiranje na RAM BTRFS particiju bez kompresije: 74 MiB/s
3. kopiranje na RAM BTRFS particiju s kompresijom: 79 MiB/s
4. kopiranje na BTRFS particiju na drugom NVME: 98 MiB/s

Pod 3 pretpostavljam kako je limitirana mogućnost komprimiranja s obzirom na nasumičan sadržaj fajlova. Da su neki tekstualni fajlovi vjerojatno bi ta brzina bila veća.

Mislim da se ovdje pokazalo ono što je bilo i za očekivati, kod rada s nekim povećim arhivama RAM kao temp dir već i na DDR4 ima smisla.

Code:
# create a bunch of small files; 100k 1k large files
for i in {1..99999}
do
    if [[ $i -lt  10 ]] then pad="0000"
    elif [[ $i -lt  100 ]] then pad="000"
    elif [[ $i -lt  1000 ]] then pad="00"
    elif [[ $i -lt  10000 ]] then pad="0"
    elif [[ $i -lt  100000 ]] then pad=""
    fi;
    # echo "1K#$pad$i";
    dd if=/dev/random of=/media/mkey/data2/RAMDisk/1K#$pad$i bs=1K count=1
done;

# create a bunch of small files; 10k 4k large files
size="4K"
for i in {1..9999}
do
    if [[ $i -lt  10 ]] then pad="0000"
    elif [[ $i -lt  100 ]] then pad="000"
    elif [[ $i -lt  1000 ]] then pad="00"
    elif [[ $i -lt  10000 ]] then pad="0"
    elif [[ $i -lt  100000 ]] then pad=""
    fi;
    dd if=/dev/random of=/media/mkey/data2/RAMDisk/$size#$pad$i bs=$size count=1
done;

# create a bunch of small files; 1k 10k large files
size="10K"
for i in {1..999}
do
    if [[ $i -lt  10 ]] then pad="0000"
    elif [[ $i -lt  100 ]] then pad="000"
    elif [[ $i -lt  1000 ]] then pad="00"
    elif [[ $i -lt  10000 ]] then pad="0"
    elif [[ $i -lt  100000 ]] then pad=""
    fi;
    dd if=/dev/random of=/media/mkey/data2/RAMDisk/$size#$pad$i bs=$size count=1
done;

# create a bunch of small files; 1k 1m large files
size="1000K"
for i in {1..99}
do
# same but with compression
umount /dev/shm/btrfs.fs
mkfs.btrfs -f /dev/shm/btrfs.fs
mount -o compress=lzo /dev/shm/btrfs.fs /mnt/btrfs

rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /mnt/btrfs # 79 MiB/s

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.773 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  83,085,529.81 bytes/sec ~ 79 MiB/s
# total size is 1,278,858,240  speedup is 0.99


# copy from one NVME to another NVME; with BTRFS compression
mkdir /home/mkey/RAMDisk
rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /home/mkey/RAMDisk

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.788 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  103,026,056.96 bytes/sec ~ 98 MiB/s
# total size is 1,278,858,240  speedup is 0.99

# cleanup
rm -fR /home/mkey/RAMDisk
umount /dev/shm/btrfs.fs
rm -f /dev/shm/btrfs.fs
    if [[ $i -lt  10 ]] then pad="0000"
    elif [[ $i -lt  100 ]] then pad="000"
    elif [[ $i -lt  1000 ]] then pad="00"
    elif [[ $i -lt  10000 ]] then pad="0"
    elif [[ $i -lt  100000 ]] then pad=""
    fi;
    dd if=/dev/random of=/media/mkey/data2/RAMDisk/$size#$pad$i bs=$size count=1
done;

# copy directly to RAM
mkdir /dev/shm/RAMDisk
rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /dev/shm/RAMDisk # 189 MiB/s

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.782 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052
# 
# sent 1,285,676,660 bytes  received 2,149,052 bytes  198,127,032.62 bytes/sec ~ 189 MiB/s
# total size is 1,278,858,240  speedup is 0.99

# cleanup
rm -fR /de
# same but with compression
umount /dev/shm/btrfs.fs
mkfs.btrfs -f /dev/shm/btrfs.fs
mount -o compress=lzo /dev/shm/btrfs.fs /mnt/btrfs

rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /mnt/btrfs # 79 MiB/s

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.773 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  83,085,529.81 bytes/sec ~ 79 MiB/s
# total size is 1,278,858,240  speedup is 0.99


# copy from one NVME to another NVME; with BTRFS compression
mkdir /home/mkey/RAMDisk
rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /home/mkey/RAMDisk

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.788 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  103,026,056.96 bytes/sec ~ 98 MiB/s
# total size is 1,278,858,240  speedup is 0.99

# cleanup
rm -fR /home/mkey/RAMDisk
umount /dev/shm/btrfs.fs
rm -f /dev/shm/btrfs.fsv/shm/RAMDisk

# create a btrfs filesystem, without compression
mkdir /mnt/btrfs
dd if=/dev/zero of=/dev/shm/btrfs.fs bs=1M count=2024
mkfs.btrfs /dev/shm/btrfs.fs
mount /dev/shm/btrfs.fs /mnt/btrfs

rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /mnt/btrfs # 74 MiB/s ; heavy CPU usage: gvfsd-trash

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.805 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  78,050,043.15 bytes/sec ~ 74 MiB/s
# total size is 1,278,858,240  speedup is 0.99

# same but with compression
umount /dev/shm/btrfs.fs
mkfs.btrfs -f /dev/shm/btrfs.fs
mount -o compress=lzo /dev/shm/btrfs.fs /mnt/btrfs

rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /mnt/btrfs # 79 MiB/s

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.773 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  83,085,529.81 bytes/sec ~ 79 MiB/s
# total size is 1,278,858,240  speedup is 0.99


# copy from one NVME to another NVME; with BTRFS compression
mkdir /home/mkey/RAMDisk
rsync -aAHX --progress --stats /media/mkey/data2/RAMDisk/ /home/mkey/RAMDisk

# Number of files: 112,996 (reg: 112,995, dir: 1)
# Number of created files: 112,995 (reg: 112,995)
# Number of deleted files: 0
# Number of regular files transferred: 112,995
# Total file size: 1,278,858,240 bytes
# Total transferred file size: 1,278,858,240 bytes
# Literal data: 1,278,858,240 bytes
# Matched data: 0 bytes
# File list size: 1,638,378
# File list generation time: 0.788 seconds
# File list transfer time: 0.000 seconds
# Total bytes sent: 1,285,676,660
# Total bytes received: 2,149,052

# sent 1,285,676,660 bytes  received 2,149,052 bytes  103,026,056.96 bytes/sec ~ 98 MiB/s
# total size is 1,278,858,240  speedup is 0.99

# cleanup
rm -fR /home/mkey/RAMDisk
umount /dev/shm/btrfs.fs
 rm -f /dev/shm/btrfs.fs

E o ovome govorim cijelo vrijeme - real world test. Hvala mkey Nego jel bi ti bio bed jos sa EXT4 testirat, preferabilno sa noatime mount opcijom?
__________________
Lenovo LOQ 15AHP9 83DX || AMD Ryzen 5 8645HS / 16GB DDR5 / Micron M.2 2242 1TB / nVidia Geforce RTX 4050 / Windows 11 Pro
Lenovo Thinkpad L15 Gen 1 || Intel Core i5 10210U / 16GB DDR4 / WD SN730 256GB / Intel UHD / Fedora Workstation 42
tomek@vz je offline   Reply With Quote