注册
关于【tpcc测试中与DM有关的系统命令】记录
技术分享/ 文章详情 /

关于【tpcc测试中与DM有关的系统命令】记录

DM_12128 2023/11/18 1230 1 0

1、top命令

top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。
top的使用方式 top [-d number] | top [-bnp]
参数	含义
-d number	number代表秒数,表示top命令显示的页面更新一次的间隔 (default=5s)
-b	以批次的方式执行top
-n	与-b配合使用,表示需要进行几次top命令的输出结果
-p	指定特定的pid进程号进行观察

启动top

top

image20231118125059031.png

1.1、各行含义

第一行含义:

top:当前系统时间
up:系统已经运行的时间
users:当前登录用户
load average:系统平均负载 每1分钟 5分钟 15分钟

image20231118124956920.png

第二行含义:

total:进程总数
running:正在运行的进程
sleeping:处于睡眠的进程
stopped:终止的进程数
zombie:僵尸进程数

image20231118124956920.png

第三行含义:

%cpu(s):cpu占用
us:用户空间占用cpu%
sy:内核空间占用cpu% 
ni:用户进程空间内改变优先级的进程占用cpu%
id:空闲cpu%
wa:等待输入输出的cpu时间%
hi:硬中断占用
si:软中断占用
st:虚拟化占用

image20231118125202380.png

第四行含义:

KiB Mem:内存占用
total:物理内存总量
free:空闲内存总量
used:已使用的物理内存总量
buff/cache:内核缓存的内存量

image20231118125356745.png

第五行含义:

KiB Swap:交换空间占用
total:交换区总量
free:空闲交换区总量
used:已使用的交换区总量
avail Mem:缓冲的交换区总量

image20231118125449095.png

第六行含义:

PID:进程id
USER:进程所有者的用户名
PR:优先级
NI:谦让度值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb
RES:进程使用的物理内存大小,单位kb
SHR:共享内存大小,单位kb
S:进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND :命令名/命令行

image20231118125723213.png

1.2、top常用按键

按 Z 键更改输出的颜色。我发现这让输出更容易被眼睛看到 

image20231118130057390.png

1键:可查看系统上每个 CPU 内核的图形表示。反复按1以评估 CPU 内核的内核统计信息

image20231118130304984.png

2键:可查看系统上每个 CPU 下每个node上具体的资源占用信息。

image20231118130514958.png

P键:根据 CPU 使用百分比大小进行排序

image20231118130743472.png

M键:根据驻留内存大小进行排序

image20231118130904181.png

N键:根据启动时间进行排序

image20231118131031252.png

1.2.7、c键

切换显示命令名称和完整命令行

image20231118131650970.png

1.3、线程开关

H键:线程开关

image20231118132538321.png

1.4、举例

如果要查看dmserver有关的线程,使用:top -p `pidof dmserver`

image20231118132820426.png

进行线程切换:H

image20231118132911774.png

2、sar命令

2.1、命令格式

sar [ 选项 ] [ <时间间隔> [ <次数> ] ]

image20231118162508253.png

2.2、命令参数

IFACE 就是网络设备的名称。
rxpck/s 每秒钟接收到的包数目。
txpck/s 每秒钟发送出去的包数目。
rxkB/s 每秒钟接收到的字节数。
txkB/s 每秒钟发送出去的字节数。
rxcmp/s 每秒钟接收到的压缩包数目。
txcmp/s 每秒钟发送出去的压缩包数目。
rxmcst/s 每秒钟接收到的多播包的包数目。
%ifutil 网络带宽的利用率

2.3、常用命令

sar -n DEV (查看全天)
sar -n DEV 1 2 (1:每隔一秒,2:写入2次)
主要关注点:%ifutil 网络带宽的利用率

image20231118162906686.png

3、iostat

iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。

3.1、命令格式

iostat 参数 时间 次数

3.2、命令参数

-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息

3.3、常用命令

iostat -xm 1
每1s刷新一次,以 M 为单位显示,显示详细信息

image20231118164836428.png

iostat -d -k 1 10
每1s刷新一次,共刷新10次,-K表示单位为kb,-d表示只统计磁盘信息

image20231118164936770.png

4、内存时延

4.1、简介

内存时延是为了测试芯片与内存通信的通信时延,需要借助工具lmbench测试,lat_mem_rd是lmbench中的一个工具,它的主要作用是测试CPU与内存之间的读取延迟。

4.2、内部实现

lat_mem_rd的延迟测试的代码是这样写的

#define    ONE            p = (char **)*p;
#define    FIVE    ONE ONE ONE ONE ONE
#define    TEN            FIVE FIVE
#define    FIFTY    TEN TEN TEN TEN TEN
#define    HUNDRED    FIFTY FIFTY
 
    while (iterations-- > 0) {
        for (i = 0; i < count; ++i) {
            HUNDRED;
        }
    }

用指针指向下一个内存地址空间来循环访问, 比如说0.00049 1.584, 这个结果就是在512字节范围内, 步长16来一直循环访问, 最后时间除以访问次数就是延迟

4.3、命令格式

命令使用:./lat_mem_rd <-t> size_in_megabytes stride [stride stride...]
若需要指定测试时的核与通道:numactl -C num1 -m num2

4.4、命令参数

-t:随机访问模式,若无此选项为顺序访问
size_in_megabytes:磁碟容量
stride:步长

4.5、常用命令

numactl -C 0 -m 0 ./lat_mem_rd -t 1 16
-C 0:程序运行时指定使用0核
-m 0:程序运行时指定使用通道0
-t:随机访问模式,若无此选项为顺序访问
1:访问的最大数据块,单位M
16:访问的步长大小,单位Byte

4.6、测试结果

执行结果的左侧为数据块大小,单位为兆M;右侧为在该数据块大小时测得的延时,延时单位是纳秒ns。

stride=16
0.00049 1.584
0.00098 1.583
0.00195 1.593
0.00293 1.593
0.00391 1.597
0.00586 1.598
0.00781 1.600
0.01172 1.600
0.01562 1.602
0.02344 1.602
0.03125 1.628
0.04688 2.230
0.06250 2.207
0.09375 2.205
0.12500 2.204
0.18750 2.237
0.25000 2.278
0.37500 2.326
0.50000 2.351
0.75000 2.345
1.00000 2.349

5、其他命令

5.1、Numa node

查看数据盘对应Numa node
cat /sys/class/nvme/nvme1/device/numa_node
查看网卡对应Numa node
cat /sys/class/net/enP6s116f1/device/numa_node
------------------------------------
numastat -H
查看numa结构

5.2、清理缓存

echo 3 > /proc/sys/vm/drop_caches

echo 0 是不释放缓存
echo 1 是释放页缓存
ehco 2 是释放dentries和inodes缓存
echo 3 是释放 1 和 2 中说道的的所有缓存

5.3、确认亲和性

确认线程亲和性(可能运行在哪个cpu)
taskset -cp $PID
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服