目录
Linux系统全面性能测试需要从多个维度进行评估,主要包括: CPU 性能 - 计算能力、多线程处理; 内存性能 - 读写速度、延迟、带宽; 磁盘 I/O - 随机读写、顺序读写、IOPS; 网络性能 - 带宽、延迟、吞吐量; 系统综合 - 整体负载能力、稳定性; 性能测试 :CPU内存,硬盘IO读写,带宽速度,UnixBench。
一、CPU物理个数、内核、超线程、多核心
终端Terminal(也称为命令行界面、控制台或 shell)是一个文本界面,让你能够通过输入命令与计算机操作系统进行交互。
cat /proc/cpuinfo是在 Linux 系统中查看 CPU 信息的命令。命令解释:
1、登录Terminal,执行:cat /proc/cpuinfo,就会显示出主机的CPU详细参数,如内核、频率、型号等等,以下是我系统主机的CPU:
主要字段含义:
2、主要参数physical_id表示物理CPU个数,cpu cores是内核数,Siblings 表示位于这一物理封装上的逻辑处理器的数量,它们可能支持也可能不支持超线程(HT) 技术 。
3、如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。如果有两个或两个以上的逻辑处理器拥有 相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。
4、如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超 线程已打开。
5、直接查看逻辑CPU的个数,执行:cat /proc/cpuinfo |grep 'physical id' |sort |uniq
6、直接查看CPU的型号,执行:cat /proc/cpuinfo |grep 'model name' |sort |uniq
7、单个CPU的内核数,执行:cat /proc/cpuinfo |grep 'cpu cores' |sort |uniq
8、总的CPU线程数,执行:cat /proc/cpuinfo |grep 'processor'
注意事项
二、内存大小、交换空间、高速缓存、实际使用内存
cat /proc/meminfo是在 Linux 系统中查看内存详细信息的命令。
/proc/meminfo:Linux 虚拟文件系统中的内存信息文件。包含系统物理内存、交换空间等的详细使用情况
1、查看主机的内存信息,执行:cat /proc/meminfo,主要是看内存大小、交换空间、高速缓存。
2、主机实际使用内存大小。Linux管理内存的机制是这样的:无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。
3、即Linux会利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers ,以此提高数据访问性能。cache主要用来减少对磁盘的I/O操作。 所以我们经常能够看到一个总内存为8GB的Linux VPS测试出来占用的内存也是8GB。
4、那么如何才能知道Linux真正占用的内存是多少呢?执行命令:free –m
5、计算主机真实的使用内存方法是:Total-Free-Cached=真实使用内存,即1016912-18584-206944=791384,表示我的主机真实使用的内存是 791384MB。
主要字段含义详解
内存总量相关
MemTotal:8167788 kB# 总物理内存(不含内核保留)MemFree:245672 kB# 完全空闲的内存MemAvailable:2153316 kB# 可用内存(估算,包含缓存和缓冲区可回收部分)
缓存和缓冲区
Buffers:84420 kB# 块设备(磁盘)缓冲区Cached:3011344 kB# 页面缓存(从磁盘读取的文件缓存)SwapCached:3180 kB# 交换缓存(曾被交换出去,现在又换入)
活跃/非活跃内存
Active:3764504 kB# 活跃内存(最近使用)Inactive:2903452 kB# 非活跃内存(可回收)Active(anon):1458636 kB# 活跃匿名页(进程堆栈)Inactive(anon):430468 kB# 非活跃匿名页Active(file):2305868 kB# 活跃文件缓存Inactive(file):2472984 kB# 非活跃文件缓存
交换空间
SwapTotal:2097148 kB# 交换分区总大小SwapFree:1512976 kB# 空闲交换空间
其他重要指标
Dirty:448 kB# 等待写入磁盘的脏页Writeback:0 kB# 正在写入磁盘的页AnonPages:168168 kB# 匿名映射页(进程堆栈)Mapped:643556 kB# 文件映射到内存的页Shmem:47364 kB# 共享内存
内核内存
Slab:302288 kB# 内核数据结构缓存SReclaimable:188116 kB# 可回收的SlabSUnreclaim:114172 kB# 不可回收的SlabKernelStack:15008 kB# 内核栈使用PageTables:30504 kB# 页表大小
透明大页
AnonHugePages:32768 kB# 匿名透明大页ShmemHugePages:0 kB# 共享内存大页ShmemPmdMapped:0 kB# PMD映射的共享内存
虚拟内存统计
VmallocTotal:34359738367 kB# vmalloc区域总大小VmallocUsed:74684 kB# 已使用的vmallocVmallocChunk:0 kB# 最大的连续vmalloc块Percpu:544 kB# per-CPU数据
硬件相关
HardwareCorrupted:0 kB# 损坏的物理内存HugePages_Total:0# 大页总数HugePages_Free:0# 空闲大页HugePages_Rsvd:0# 预留大页HugePages_Surp:0# 超额大页Hugepagesize:2048 kB# 大页大小DirectMap4k:618880 kB# 4KB页直接映射DirectMap2M:7946240 kB# 2MB页直接映射DirectMap1G:1048576 kB# 1GB页直接映射
注意事项
三、磁盘IO读写速度测试
在 Linux 系统中,有多种方法可以测试磁盘的 I/O 读写速度。方法有:使用dd命令(简单快速)、使用hdparm命令(主要用于HDD)、使用ioping测试延迟、使用sysbench综合测试、使用图形化工具等。下面采用dd命令测试。
1、磁盘IO,即输入/输出(Input/Output),这是测试磁盘性能一个重要指标。
2、测试主机磁盘IO的性能可以执行以下两个命令:
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync
测试写入速度
# 测试连续写入(1GB文件)dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync# 更准确的测试(4K块,2048次)dd if=/dev/zero of=/tmp/test2.img bs=4k count=2048 oflag=dsync# 测试缓存写入(绕过缓存)dd if=/dev/zero of=/tmp/test3.img bs=8k count=256k conv=fdatasync
测试读取速度
# 首先创建测试文件dd if=/dev/zero of=/tmp/testfile bs=1G count=1# 清除缓存echo 3 | sudo tee /proc/sys/vm/drop_caches# 测试读取dd if=/tmp/testfile of=/dev/null bs=8k
同时测试读写
# 使用/dev/urandom生成随机数据dd if=/dev/urandom of=/tmp/test_io bs=4k count=10000
dd参数说明 :
3、conv=fdatasync与oflag=dsync的区别在于:sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。
4、而fsync函数只对由文件描述符filedes指定的单一文件起作用,并且等待写磁盘操作结束,然后返回。这是我电脑的硬盘IO测试结果。
影响测试结果的因素
不同磁盘类型的预期速度
| 磁盘类型 | 顺序读取 | 顺序写入 | 4K随机读取 (IOPS) |
|---|---|---|---|
| HDD (7200rpm) | 100-200 MB/s | 80-160 MB/s | |
| 400-550 MB/s | 300-500 MB/s | 30,000-80,000 | |
| 2,000-7,000 MB/s | 1,500-5,000 MB/s | 200,000-1,000,000 |
四、速度测试:上传下载速度、服务器带宽
使用 speedtest-cli 的 Python 版本进行网络速度测试。不过需要注意的是,旧版本的 speedtest-cli.py 可能已经不再维护了。测试VPS主机入口与出口的带宽一键脚本,执行命令:
wget
python speedtest_cli.py --share
更新版 speedtest-cli 使用方法
# 安装最新版pip install speedtest-cli# 或者pip install speedtest-cli==2.1.3# 运行测试speedtest-cli# 生成分享链接speedtest-cli --share# 简化输出speedtest-cli --simple# 指定服务器(如上海电信)speedtest-cli --server 3633 --share
五、性能综合测试:UnixBench跑分工具测试
1、UnixBench是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试性能的工具,Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。
2、UnixBench测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器,测试系统各个方面一系列的性能,然后将每个 测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分值。
3、UnixBench测试执行以下命令:
wget
chmod +x unixbench.sh
./unixbench.sh
4、测试时间可能会比较长,请耐心等待。最后UnixBench会详细列出各个测试项目的得分情况,以及主机性能的综合跑分结果。 如下图,得分为879.7。
这些测试的结果有一个指数值(INDEX ,如520),这个值是测试系统的测试结果与一个基线 系统测试 结果比较得到的指数值,这样比原始值更容易得到参考价值,测试集合里面所有的测试得到的指数值结合起来得到整个系统的指数值。
六、测试注意事项
测试原则
结果解读要点
七、总结
这个全面性能测试方案涵盖了 Linux 系统的各个关键方面。根据你的具体需求(如服务器性能评估、硬件选型、系统调优等),可以选择相应的测试组合进行。
以上就是Linux系统如何做性能测试?的详细内容,更多相关资料请阅读主机测评网其它文章!














发表评论