外贸视频网站wordpress模版哪个好
外贸视频网站,wordpress模版哪个好,网站首页建设图文教程,店铺装修设计网sysbench 是一个非常经典的综合性能测试工具#xff0c;通常都用它来做数据库的性能压测#xff0c;但也可以用来做CPU#xff0c;IO的性能测试。而对于IO测试#xff0c;不是很推荐sysbench#xff0c;倒不是说它有错误#xff0c;工具本身没有任何问题#xff0c;它的…sysbench 是一个非常经典的综合性能测试工具通常都用它来做数据库的性能压测但也可以用来做CPUIO的性能测试。而对于IO测试不是很推荐sysbench倒不是说它有错误工具本身没有任何问题它的测试方法导致测试的数据会让人有些困惑性能数据到底是不是这样呢跟云厂商承诺的性能有关系嘛。一般我们都用FIO来进行性能测试云厂商都推荐用FIO进行性能测试通过FIO性能测试都能轻易达到云厂商承诺的性能。插曲关于sysbench的版本现在主要有0.4.12和1.0.版本。截止2006年sysbench好长时间没有发展2017年之前都是用旧版本0.4.12所以网上一搜一大堆文章都是0.4.的教程然后作者估计修了几个bug变成0.5版本然后就跟过去做了告别从2017重新开发了一个新版本sysbench 1.0.*这里讲述的性能测试都是用了最新版。1. sysbench fileio测试言归正传sysbench怎么做IO的性能测试呢sysbench fileio help,参数如下#/usr/local/sysbench_1/bin/sysbench fileio help
sysbench 1.0.9 (using bundled LuaJIT 2.1.0-beta2)fileio options:--file-numN number of files to create [128]--file-block-sizeN block size to use in all IO operations [16384]--file-total-sizeSIZE total size of files to create [2G]--file-test-modeSTRING test mode {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}--file-io-modeSTRING file operations mode {sync,async,mmap} [sync]--file-async-backlogN number of asynchronous operatons to queue per thread [128]--file-extra-flagsSTRING additional flags to use on opening files {sync,dsync,direct} []--file-fsync-freqN do fsync() after this number of requests (0 - dont use fsync()) [100]--file-fsync-all[on|off] do fsync() after each write operation [off]--file-fsync-end[on|off] do fsync() at the end of test [on]--file-fsync-modeSTRING which method to use for synchronization {fsync, fdatasync} [fsync]--file-merged-requestsN merge at most this number of IO requests if possible (0 - dont merge) [0]--file-rw-ratioN reads/writes ratio for combined test [1.5]复制代码sysbench的性能测试都需要做prepare,run,cleanup这三步准备数据跑测试删除数据。那下面就开始实战客户用2C4G的vm,挂载120G的SSD云盘做了性能测试测试命令如下cd /mnt/vdb #一定要到你测试的磁盘目录下执行否则可能测试系统盘了
sysbench fileio --file-total-size15G --file-test-moderndrw --time300 --max-requests0 prepare
sysbench fileio --file-total-size15G --file-test-moderndrw --time300 --max-requests0 run
sysbench fileio --file-total-size15G --file-test-moderndrw --time300 --max-requests0 cleanup复制代码结果如下File operations:reads/s: 2183.76writes/s: 1455.84fsyncs/s: 4658.67Throughput:read, MiB/s: 34.12written, MiB/s: 22.75General statistics:total time: 300.0030stotal number of events: 2489528Latency (ms):min: 0.00avg: 0.12max: 204.0495th percentile: 0.35sum: 298857.30Threads fairness:events (avg/stddev): 2489528.0000/0.00execution time (avg/stddev): 298.8573/0.00复制代码随机读写性能好像不咋地换算IOPS为(34.1222.75)*1024/16.3843554.375与宣称的5400IOPS有很大差距。眼尖的人肯定发现只有2个核去遍历128个文件好像会降低效率于是定制file-num去做了系列测试测试结果如下file-num1248163264128read(MB/s)57.5157.357.3657.3355.1247.7241.1134.12write(MB/s)38.3438.238.2438.2236.7531.8127.422.75明显可以看到默认测试方法会导致性能下降文件数设置为1达到最大性能。那file-num128与file-num1的区别是测试文件从128个变成1个但是总文件大小都是15G都是随机读写按理性能应该是一致的区别是会在多个文件之间切换读写那么可能会导致中断增加和上下文切换开销增大。通过vmstat命令得到了验证file-num128的vmstat输出是这样的file-num1的vmstat输出是这样的从上面两个图可以看出file-num1的时候上下文切换只有8500左右比file-num128的时候24800小多了in中断也少太多了。减少了中断和上下文切换开销吞吐能力显著提升了。再做了一个实验同样磁盘大小改成挂载到8C的vm下改成8线程进行测试得到如下数据file-num1248163264128read(MB/s)253.08209.86193.38159.73117.9886.7867.3951.98write(MB/s)168.72139.9128.92106.4978.6657.8544.9334.65可以得出同样的结论file-num1可以得到最好的性能理由如上。2. 与fio测试的比较单进程下file-num1换算到IOPS为(57.5138.34)*1024/16.3845990.625这好像超过我们的IOPS设置限定了。通过fio是怎么测得这个IOPS的呢fio -direct1 -iodepth128 -rwrandrw -ioenginelibaio -bs4k -size1G -numjobs1 -runtime1000 -group_reporting -filenameiotest -namerandrw_test复制代码通过阅读源代码发现很多不同一个是通过libaio一个是通过pwrite/pread。libaio的性能是非常强劲的详情可以参考文章。即使ioenginepsync这个engine的读写方法是pread和pwrite但是整个实现也是不一致的。fio测试的时候direct1就是每次都写入磁盘而sysbench默认file-fsync-freq100也就是完成100次操作才会有一个fsync操作这种操作涉及系统缓存。3. 深入一步上节认为操作系统干扰以及io读写方式的差异造成了测试数据的不一致。深入去研究了下源代码其实sysbench的作者是提倡用libaio代码里面大量地运用了宏定义如/* 异步写的截取代码 */
#ifdef HAVE_LIBAIOelse if (file_io_mode FILE_IO_MODE_ASYNC){/* Use asynchronous write */io_prep_pwrite(iocb, fd, buf, count, offset);if (file_submit_or_wait(iocb, FILE_OP_TYPE_WRITE, count, thread_id))return 0;return count;}
#endif复制代码那怎么启用这个宏呢默认就是启用这个宏的。启用这个宏后执行sysbench fileio help,会发现有这一项--file-async-backlogN number of asynchronous operatons to queue per thread [128]说明HAVE_LIBAIO这个宏确实生效了。既然sysbench默认有libaio后那整个测试方法需要调整# --file-extra-flagsdirect 文件读写模式改成direct
# --file-io-modeasync 确保libaio起效
# --file-fsync-freq0 不需要执行fsync
sysbench fileio --file-total-size15G --file-test-moderndrw --time300 --max-requests0 --file-io-modeasync --file-extra-flagsdirect --file-num1 --file-rw-ratio1 --file-fsync-freq0 run复制代码得到测试结果如下对于FIO命令也进行了调整把bs调整成16k其他不变还是达到上限5400。测试结果如下可以看到sysbench测试的效果与fio的测试效果完全一致不过个人还是推荐FIO来做IO的性能测试。转载于:https://juejin.im/post/5c1c9ce5e51d451ffd254011
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87832.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!