در این مطلب سه هارد ssd مدل اینتل VK0480GEYJR (تحت برند HPE) و سامسونگ مدل MZ7KM480 و SSD 960 PRO 512GB رو مقایسه میکنیم.
دو مدل اول به ریدکنترلر متصل هستند و برای دیدن نتایج واقعی cahce ریدکنترلر خاموش است. مدل سوم روی pci express سرور سوار است و فقط os اون رو میبینه.
دو تست روی هاردهای ssd انجام میدیم.در تست اول برای کاری که تخصص دارند و اون نوشتن و خواندن Random هست و دیگری حالت Sequential که برای دیسکهای معمولی هم کار راحتی و معمولا حیف برای اینجور کارها بخوایم از ssd استفاده کنیم.
هارد ssd اینتل
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
fio —randrepeat=1 —ioengine=libaio —direct=1 —gtod_reduce=1 —name=test —filename=test —bs=4k —iodepth=64 —size=4G —readwrite=randrw —rwmixread=75 test: (g=0): rw=randrw, bs=4K–4K/4K–4K/4K–4K, ioengine=libaio, iodepth=64 fio–2.2.10 Starting 1 process Jobs: 1 (f=1): [m(1)] [100.0% done] [188.4MB/64520KB/0KB /s] [48.3K/16.2K/0 iops] [eta 00m:00s] test: (groupid=0, jobs=1): err= 0: pid=14143: Sun Aug 6 15:16:46 2017 read : io=3071.7MB, bw=192038KB/s, iops=48009, runt= 16379msec write: io=1024.4MB, bw=64040KB/s, iops=16010, runt= 16379msec cpu : usr=8.89%, sys=45.45%, ctx=361045, majf=0, minf=605 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued : total=r=786347/w=262229/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=64 Run status group 0 (all jobs): READ: io=3071.7MB, aggrb=192037KB/s, minb=192037KB/s, maxb=192037KB/s, mint=16379msec, maxt=16379msec WRITE: io=1024.4MB, aggrb=64040KB/s, minb=64040KB/s, maxb=64040KB/s, mint=16379msec, maxt=16379msec Disk stats (read/write): sdc: ios=773774/258385, merge=1358/173, ticks=794948/222572, in_queue=1017672, util=99.46% |
نکته اول اینکه با fio سعی کردیم حالت واقعی سرور رو شبیهسازی کنیم 75 درصد read و 25 درصد write. مهمترین بخش هم iops هست.
iops=48009 برای read و iops=16010 برای رایت.
برای تست دوم از dd استفاده میکنیم. نکته مهم اینه که oflag=dsync به ازای هر تیکهای که میخواد روی هارد بنویسه (۵۱۲ بار میپرسه) تاییدیه از os میگره. اما conv=fdatasync تنها یکبار در انتهای نوشتن و هنگام خروج از dd تاییدیه از os گرفته میشه.
1 2 3 4 5 6 7 8 9 |
dd if=/dev/zero of=novid bs=1M count=512 oflag=dsync 512+0 records in 512+0 records out 536870912 bytes (537 MB, 512 MiB) copied, 1.96172 s, 274 MB/s dd if=/dev/zero of=novid bs=1M count=512 conv=fdatasync 512+0 records in 512+0 records out 536870912 bytes (537 MB, 512 MiB) copied, 1.45621 s, 369 MB/s |
هارد ssd سامسونگ مدل MZ7KM480
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
fio —randrepeat=1 —ioengine=libaio —direct=1 —gtod_reduce=1 —name=test —filename=test —bs=4k —iodepth=64 —size=4G —readwrite=randrw —rwmixread=75 test: (g=0): rw=randrw, bs=4K–4K/4K–4K/4K–4K, ioengine=libaio, iodepth=64 fio–2.2.10 Starting 1 process Jobs: 1 (f=1): [m(1)] [100.0% done] [266.7MB/90880KB/0KB /s] [68.3K/22.8K/0 iops] [eta 00m:00s] test: (groupid=0, jobs=1): err= 0: pid=14225: Sun Aug 6 15:24:17 2017 read : io=3071.7MB, bw=271248KB/s, iops=67811, runt= 11596msec write: io=1024.4MB, bw=90455KB/s, iops=22613, runt= 11596msec cpu : usr=14.08%, sys=52.78%, ctx=768554, majf=0, minf=605 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued : total=r=786347/w=262229/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=64 Run status group 0 (all jobs): READ: io=3071.7MB, aggrb=271247KB/s, minb=271247KB/s, maxb=271247KB/s, mint=11596msec, maxt=11596msec WRITE: io=1024.4MB, aggrb=90454KB/s, minb=90454KB/s, maxb=90454KB/s, mint=11596msec, maxt=11596msec Disk stats (read/write): sdb: ios=771941/257788, merge=1231/167, ticks=552804/164876, in_queue=722248, util=99.45% |
iops=67811 برای read و iops=22613 برای رایت. که نشون میده در میون هاردهای ssd سرور سامسونگ از مدل اینتل پیشی گرفته.
1 2 3 4 5 6 7 8 |
dd if=/dev/zero of=novid bs=1M count=512 oflag=dsync 512+0 records in 512+0 records out 536870912 bytes (537 MB, 512 MiB) copied, 1.86999 s, 287 MB/s dd if=/dev/zero of=novid bs=1M count=512 conv=fdatasync 512+0 records in 512+0 records out |
در این تست هم سامسونگ برنده شده.
و اما مدل دیگه سامسونگ pro 960 که از پیش حدس میزنیم سرعت خیلی بالاتری داشته باشه.
سامسونگ pro 960
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
fio —randrepeat=1 —ioengine=libaio —direct=1 —gtod_reduce=1 —name=test —filename=test —bs=4k —iodepth=64 —size=4G —readwrite=randrw —rwmixread=75 test: (g=0): rw=randrw, bs=4K–4K/4K–4K/4K–4K, ioengine=libaio, iodepth=64 fio–2.2.10 Starting 1 process test: Laying out IO file(s) (1 file(s) / 4096MB) Jobs: 1 (f=1): [m(1)] [75.0% done] [719.6MB/240.2MB/0KB /s] [184K/61.5K/0 iops] [eta 00m:01s] Jobs: 1 (f=1): [m(1)] [100.0% done] [690.4MB/229.5MB/0KB /s] [177K/58.8K/0 iops] [eta 00m:00s] test: (groupid=0, jobs=1): err= 0: pid=14313: Sun Aug 6 15:33:11 2017 read : io=3071.7MB, bw=705402KB/s, iops=176350, runt= 4459msec write: io=1024.4MB, bw=235236KB/s, iops=58808, runt= 4459msec cpu : usr=19.47%, sys=70.17%, ctx=27594, majf=0, minf=367 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued : total=r=786347/w=262229/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=64 Run status group 0 (all jobs): READ: io=3071.7MB, aggrb=705402KB/s, minb=705402KB/s, maxb=705402KB/s, mint=4459msec, maxt=4459msec WRITE: io=1024.4MB, aggrb=235235KB/s, minb=235235KB/s, maxb=235235KB/s, mint=4459msec, maxt=4459msec Disk stats (read/write): nvme0n1: ios=766260/255818, merge=0/0, ticks=182612/2688, in_queue=185564, util=97.90% |
این هارد خوب iops=176350 برای read و iops=58808 رو برای نوشتن به ما میده که البته فاصله خیلی زیادی با اعدادی داره که سامسونگ ادعا میکنه :)
1 2 3 4 5 6 7 8 9 |
dd if=/dev/zero of=novid bs=1M count=512 oflag=dsync 512+0 records in 512+0 records out 536870912 bytes (537 MB, 512 MiB) copied, 3.57902 s, 150 MB/s dd if=/dev/zero of=novid bs=1M count=512 conv=fdatasync 512+0 records in 512+0 records out 536870912 bytes (537 MB, 512 MiB) copied, 0.635125 s, 845 MB/s |
و در کمال تعجب میشه دید که این ssd در حالت sequential خیلی هم خوب کار نمیکنه :)