Linux测试¶
1 crontab开启定时任务¶
- 守护进程cron会读取crontab文件,定时的执行任务
- 语法:
crontab [ -u user ] [ -i ] { -e | -l | -r }
-u user
:指定要操作哪个用户的crontab文件,忽略时默认当前用户-l
:显示crontab文件-e
:编辑crontab文件-r
:删除crontab文件-i
:配合-r
时显示确认yes、no选择crontab
文件语法* * * * * myCommand
- 第1列分钟0~59
- 第2列小时0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列要运行的命令
myCommand
:要执行的命令或脚本
- 示例:
3,15 8-11 * * 1 /bin/bash /home/shw/shell/crontab/task.sh
表示每周一上午8点到11点的第3和第15分钟执行命令脚本
2 Linux模拟网络丢包与延迟¶
- 参考资料
- 准备工具
tc
工具netem
3 nmon系统资源监控工具¶
4 iftop 监控网络流量¶
4.1 命令行参数解释¶
-i interface
:指定要监控的网卡接口-B
:以byte而不是bit作为单位(默认bit)-b
:不显示流量条型图-n
:显示ip,而不是hostname-P
:显示端口信息
4.2 交互命令解释¶
按键t
:切换主机接收和发送显示的模式:两行显示、一行显示、只显示发送流量、只显示发送流量;按键n
:切换显示hostname和ip按键p
:切换是否显示port按键b
:切换是否显示流量条型图按键q
:退出
4.3 输出信息解释¶
5 fio 读写io性能测试工具¶
5.1 fio 参数选项¶
5.1.1 I/O type¶
direct=bool
:默认true;当true时,不使用系统缓存,同Linux下O_DIRECT。buffered=bool
:默认false;与direct
相反;readwrite=str 或 rw=str
:执行IO方式,可选值如下read
:顺序读write
:顺序xierandread
:随机读randwrite
:随机写rw 或 readwrite
:顺序读写randrw
:随机读写trim
:trimwrite
:
5.1.2 Block size¶
blocksize=int[,int][,int] 或 bs=int[,int][,int]
:设置blocksize,指定大小,默认4096bs=256k
:means 256k for reads, writes and trims.bs=8k,32k
;means 8k for reads, 32k for writes and trims.bs=8k,32k,
:means 8k for reads, 32k for writes, and default for trims.bs=,8k
:means default for reads, 8k for writes and trims.bs=,8k,
:means default for reads, 8k for writes, and default for trims.blocksize_range=irange[,irange][,irange] 或 bsrange=irange[,irange][,irange]
:设置blocksize,指定大小区间,实际的blocksize一定是最小值的整数倍,逗号分割规则同blocksizebsrange=1k-4k,2k-8k
:
5.1.3 I/O size¶
size=int
:每一个job(线程)文件io总大小(注意是每一个线程),单个文件大小等于nrfiles/size
filesize=irange(int)
:设置单个文件的大小,可以给定一个区间
5.1.4 I/O engine¶
io引擎作用是使用哪种io类型去执行io操作,比如同步psync、异步libaio。
- 参考(https://fio.readthedocs.io/en/latest/fio_doc.html#i-o-engine)
ioengine=str
:io方式psync
:Basic pread(2) or pwrite(2) I/O. Default on all supported operating systems except for Windows.sync
:Basic read(2) or write(2) I/O. lseek(2) is used to position the I/O location. See fsync and fdatasync for syncing write I/Os.libaio
:Linux native asynchronous I/O. Note that Linux may only support queued behavior with non-buffered I/O (set direct=1 or buffered=0). This engine defines engine specific options.mmap
:File is memory mapped with mmap(2) and data copied to/from using memcpy(3)....
5.1.5 I/O depth¶
io深度用于异步io(如libaio),且direct=1(即不通过系统缓存)是才有效。对应每一块设备,depth都有一个最优值,并不是depth越大越好。
- iodepth=int
:设置io深度,默认1
5.1.6 file、directory¶
directory=str
:设置文件生成的目录filename=str
:设置文件名前缀(默认是job name + thread number + file number)name
:设置job的名称nrfiles=int
:每一个job(线程)文件数,单个文件大小可以由size/nrfiles
计算openfiles=int
:同时打开文件的数量,默认等于nrfiles,通常设置为1unlink=bool
:执行完job后是否删除测试文件
5.1.7 thread、process、job¶
thread
:fio默认使用fork创建进程,此选项在linux下会采用pthread_create常见线程nice=int
:设置进程的优先级,同linux下niceprio=int
:设置当前job的io的优先级,同linux下ionice,范围0-7,linux下默认4group_reporting
:按group输出测试信息,如果没有此参数,默认是以job(线程)为单位输出信息,这样在多job情况下,可读性差
5.2 命令行设置参数¶
--output=filename
:fio执行的输出信息到文件,而不是控制台
5.3 fio参数type和unit¶
5.3.1 时间单位¶
时间单位默认是秒s
,且不区分大小写
- D or d
– means days
- H or h
– means hours
- M or m
– means minutes
- s or sec
means seconds (default)
- ms or msec
means milliseconds
- us or usec
means microseconds
5.3.2 大小单位¶
fio可以通过kb_base
来设置采用1000或1024作为kb基数;
- kb_base=int
:设置按1000或1024来解释k,默认是1024
- 当kb_base=1000
时:
- K – means kilo (K) or 1000
- M – means mega (M) or $1000^2$
- G – means giga (G) or $1000^3$
- T – means tera (T) or $1000^4$
- P – means peta (P) or $1000^5$
- 当kb_base=1024
时:
- Ki – means kibi (Ki) or 1024
- Mi – means mebi (Mi) or $1024^2$
- Gi – means gibi (Gi) or $1024^3$
- Ti – means tebi (Ti) or $1024^4$
- Pi – means pebi (Pi) or $1024^5$
- 示例
Examples with kb_base=1000:
4 KiB: 4096, 4096b, 4096B, 4ki, 4kib, 4kiB, 4Ki, 4KiB
1 MiB: 1048576, 1mi, 1024ki
1 MB: 1000000, 1m, 1000k
1 TiB: 1099511627776, 1ti, 1024gi, 1048576mi
1 TB: 1000000000, 1t, 1000m, 1000000k
Examples with kb_base=1024 (default):
4 KiB: 4096, 4096b, 4096B, 4k, 4kb, 4kB, 4K, 4KB
1 MiB: 1048576, 1m, 1024k
1 MB: 1000000, 1mi, 1000ki
1 TiB: 1099511627776, 1t, 1024g, 1048576m
1 TB: 1000000000, 1ti, 1000mi, 1000000ki
5.3.3 bool类型¶
bool可选值有:
- true or 1
:表示真
- false or 0
:表示假
5.4 fio配置文件¶
fio文件基本格式如下,[global]表示多个job共享的参数
; -- start job file --
[global]
rw=randread
size=128m
[job1]
[job2]
; -- end job file --
- 参数如下:
stonewall
:指示等待上一个job完成后,才执行当前job。(默认多个job同时执行)exitall
:当多个job同时工作时,只要有一个job完成了,就会终止所有job。(默认是继续执行)
5.4.1 注释¶
行首是;
或#
时,表示这行是注释;如:#注释行
或;注释行
5.4.2 示例¶
[global]
ioengine=psync
direct=1
group_reporting
runtime=300
openfiles=1
iodepth=1
file_service_type=sequential
size=3000M
nrfiles=1000
rw=write
bs=4K
[4K-write-psync-3000M-1-1]
name=fio_write_4K1_1
numjobs=8
directory=/fiotest/4K_3M
[4K-write-psync-3000M-1-2]
name=fio_write_4K1_2
numjobs=8
directory=/fiotest/4K_3M_2
[4K-write-psync-3000M-1-3]
name=fio_write_4K1_3
numjobs=8
directory=/fiotest/4K_3M_3
stonewall
[4K-write-psync-3000M-1-4]
name=fio_write_4K1_4
numjobs=8
directory=/fiotest/4K_3M_4