linux常用性能观测工具---硬件相关

2023-11-16

在这里插入图片描述

rdmsr

在Linux内核源码中提供了读写CPU MSR寄存器模块,使可以在用户空间直接读写MSR寄存器。
开源社区提供msr寄存器读写工具msrtools,其中有两个命令,rdmsr/wrmsr。要使rdmsr/wrmsr命令真正可以读写msr寄存器,系统中必须有msr模块,或将msr模块编译进内核,下面是从内核配置选项中选取的内容。

top

语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:

d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
在这里插入图片描述

第一行,任务队列信息,同 uptime 命令的执行结果

系统时间:07:27:05

运行时间:up 1:57 min,

当前登录用户: 3 user

负载均衡(uptime) load average: 0.00, 0.00, 0.00

 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进程)

总进程:150 total, 运行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie

第三行,cpu状态信息

0.0%us【user space】— 用户空间占用CPU的百分比。

0.3%sy【sysctl】— 内核空间占用CPU的百分比。

0.0%ni【】— 改变过优先级的进程占用CPU的百分比

99.7%id【idolt】— 空闲CPU百分比

0.0%wa【wait】— IO等待占用CPU的百分比

0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比

0.0%si【Software Interrupts】— 软中断占用CPU的百分比

第四行,内存状态

1003020k total, 234464k used, 777824k free, 24084k buffers【缓存的内存量】

第五行,swap交换分区信息

2031612k total, 536k used, 2031076k free, 505864k cached【缓冲的交换区总量】

备注:

可用内存=free + buffer + cached

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,

第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。

纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

第六行,空行

第七行以下:各进程(任务)的状态监控

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

详解

VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来

DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下:
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期

free

语法
free [-bkmotV][-s <间隔秒数>]
参数说明:

-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:

B = bytes
K = kilos
M = megas
G = gigas
T = teras
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。

ps

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。

kill 命令用于杀死进程。

linux上进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

vmstat

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

pidstat

pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

slabtop

slabtop 显示内核信息实时,实时显示详细的 slab 缓存的内核信息.它会显示一个清单顶部缓存此列排序条件排序.它还显示一个统计头的楼板填充图层信息.

内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过slab来分配的。通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的多,或者什么资源有没有泄漏。linux系统透过/proc/slabinfo来向用户暴露slab的使用情况。

Linux 所使用的 slab 分配器的基础是 Jeff Bonwick 为 SunOS 操作系统首次引入的一种算法。Jeff 的分配器是围绕对象缓存进行的。在内核中,会为有限的对象集(例如文件描述符和其他常见结构)分配大量内存。Jeff 发现对内核中普通对象进行初始化所需的时间超过了对其进行分配和释放所需的时间。因此他的结论是不应该将内存释放回一个全局的内存池,而是将内存保持为针对特定目而初始化的状态。Linux slab 分配器使用了这种思想和其他一些思想来构建一个在空间和时间上都具有高效性的内存分配器。

保存着监视系统中所有活动的 slab 缓存的信息的文件为/proc/slabinfo。

sar

sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等
sar [options] [-A] [-o file] t [n]

其中:

t为采样间隔,n为采样次数,默认值是1;

-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。

options 为命令行选项,sar命令常用选项如下:

-A:所有报告的总和

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

proc

Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

dstat

dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat扬长避短,即克服了这些命令的局限又增加了一些额外的功能,不但拥有更多的监控项,也更灵活。dstat在性能测试、基准测试和排除故障过程中可以很方便监控系统运行状况。
  dstat可以查看所有的实时系统资源,如:通过统计IDE控制器当前状态来比较磁盘利用率,或者直接通过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。
  dstat以列表的形式提供选项信息,并清晰地告知以何种幅度和单位显示输出。输出信息整洁,降低发生错误的概率。最重要的是,整洁的数据更容易编写插件用来收集分析关注的数据信息。
  dstat默认输出是专门为实时查看而设计的,然而也可以将详细信息通过cvs输出到一个文件,然后将cvs文件导入到Gnumeric或者Excel中生成图表。

perf

perf是一款Linux性能分析工具。Linux性能计数器是一个新的基于内核的子系统,它提供一个性能分析框架,比如硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器、tracepoint)功能。
通过perf,应用程序可以利用PMU、tracepoint和内核中的计数器来进行性能统计。它不但可以分析制定应用程序的性能问题(per thread),也可以用来分析内核的性能问题,当然也可以同事分析应用程序和内核,从而全面理解应用程序中的性能瓶颈。
使用perf,可以分析程序运行期间发生的硬件事件,比如instructions retired、processor clock cycles等;也可以分析软件时间,比如page fault和进程切换。
perf是一款综合性分析工具,大到系统全局性性能,再小到进程线程级别,甚至到函数及汇编级别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux常用性能观测工具---硬件相关 的相关文章

  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • PIL 的 Image.show() 带来*两个*不同的查看器

    在 python shell 中处理图像时 我使用 image show 其中 image 是 Image 的实例 很久以前什么也没发生 但在定义了一个名为 xv 的 Mirage 符号链接后 我很高兴 最近几天 show 将显示 Imag
  • 应用程序中两个不同版本的库

    考虑一个场景 其中有两个不同版本的共享库 考虑 A 1 so 链接到 B so A 2 so 链接到 C so 现在 B so 和 C so 都链接到 d exe 当 B so 想要调用 A 1 so 中的函数时 它最终会调用 A 2 so
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了

随机推荐

  • js每日定时请求接口

    需求是每日十点请求一次接口 初始方法是写一个一分钟的轮询 定时查询系统时间 如果时间为10点就执行请求函数 但是考虑这样太浪费资源 在师傅的帮助下找到了一个更优的方法 计算当前时间和目标时间的时间间隔 如果超过 则设置定时查询的时间间隔为距
  • 线段树合并例题

    https www luogu com cn problem P3224 1 永无乡 题意 给 n 个岛屿 每个岛有一个标号 初始修有 m 条路 有两个操作 操作1 为 给两个岛屿之间修路 操作2为求出 所有能从当前岛屿到达的岛 中标号第k
  • shell脚本之if多分支和case分支语句

    文章目录 一 多分支if语句 二 case分支语句 三 实操 3 1 系统控制服务脚本 控制服务的启动 重启 停止 3 2 根据学生的成绩 判断优秀 良好 和不及格几个等级 3 3 删除家目录 3 4 剪刀石头布 电脑与人 3 5 case
  • 软件测试从业人员学历和专业分布情况

    随着 十四五 规划对科技创新提出了更迫切的要求 国内人工智能 AI 物联网 大数据 云计算等IT产业得到了迅速发展 可是现阶段 我国软件测试基础人才不足 已成为制约我国软件产业发展的瓶颈 据国家权威部门统计 中国软件测试人才缺口近40万 并
  • 华为手机连电脑_华为手机也能连苹果电脑!文件互传超方便~

    每个人手机里 都存了许多回忆 有人会珍藏很多难忘的影像 有人会保存甜蜜或珍贵的聊天记录 也有人小心翼翼地保管着自己的通讯录 俗话说 未雨绸缪才能有备无患 为防止手机里的数据丢失 做好备份实在是太有必要了 今天花部长就来给大家讲一讲 华为 荣
  • jsp自定义tag标签

    首先定义use tag 存放目录在 WEB INF tags use tag div p This is a test p br div
  • JAVA中方法的值传递

    首先了解在程序设计语言中 有关将参数传递给方法的一些专业术语 按值调用 call by value 表示方法接收的是调用者提供的值 而按引用调用 call by reference 表示方法接收的是调用者提供的变量地址 一个方法可以修改传递
  • 【uniapp】五、通用插件封装与运行平台判断(续集)

    一 uniapp项目目录 uniapp给我们的项目框架介绍 有一些文件夹是没有在模板中内置的 因此我们需要自己手动创建以下 例如最外层的components 用来放置我们的一些全局通用组件 components 符合vue组件规范的uni
  • Mybatis 查询出来的数据集合数量正确,但是具体数据为null

    目录 回顾场景 问题分析 解决方案 把对应的实体类字段名与数据库的保持一致 然后查询 回顾场景 确认sql语句没有问题 可以在数据库查询出来 3条数据 但是通过代码查询出来List集合 看到数量是对的 但是里面的数据全部为空null 问题分
  • 服务大厅支撑系统 服务器,GB∕T 36639-2018 信息安全技术 可信计算规范 服务器可信支撑平台(高清版).pdf...

    2018年新发布国家标准 即将实施 及早知悉 把握先机 ICS35 040 L80 中华人 民共和 国国家标准 GBT36639 2018 信息安全技术 可信计算规范 服务器可信支撑平台 Informationsecurittechnolo
  • 模拟电路设计(11)--- 运算放大器实际使用注意事项

    判断是否负反馈状态 我们先来说下什么是负反馈 凡是将放大电路输出量 电压或电流 直流或交流 的一部分或全部 通过一定的电路 称为反馈电路 以一定的方式 串联或并联 反送到放大电路的输入电路 减小净输入量 从而使输出量比无反馈时也随之减小的反
  • 灾难恢复! 关于做过快照的AVHD文件合并成VHD .

    http bbs 51cto com thread 964919 1 html 应用实例 某公司新装一台虚拟化服务器 采用W2008R2 用三个硬盘 其中一个固态硬盘用来做父系统 2个SAS硬盘做RAID1 存储VHD 某管理员3个月前安装
  • 防火墙双机热备

    目录 防火墙双机热备概述 VRRP VRRP术语 VRRP和Cisco的HSRP的区别 VRRP的状态机 VRRP的工作原理 双机热备的备份方式自动备份 该莫试下 和双机热备有关的配置命令只能在主用设备上配置 主用设备自动将状态信息同步到备
  • Elasticsearch5.5-IK分词器安装

    0 下载对应的版本IK https github com medcl elasticsearch analysis ik releases 1 在elasticsearch的plugins文件夹下新建ik目录 2 讲下载下来的ik分词器解压
  • python 解决约瑟夫环问题

    题目1 计算约瑟夫环问题 tips 幸运的基督徒 有15个基督徒和15个非基督徒在海上遇险 为了能让一部分人活下来不得不将其中15个人扔到海里面去 有个人想了个办法就是大家围成一个圈 由某个人开始从1报数 报到9的人就扔到海里面 他后面的人
  • (div+css特效代码) 导航菜单栏

    截图效果 Jsp代码
  • System用法详细解析

    System类代表系统 系统级的很多属性和控制方法都放置在该类的内部 该类位于java lang包 由于该类的构造方法是private的 所以无法创建该类的对象 也就是无法实例化该类 其内部的成员变量和成员方法都是static的 标准输入输
  • OpenStack实例控制台报错

    OpenStack实例控制台报错1006 环境说明 操作系统信息 CentOS Linux release 7 9 2009 Core Linux node2 yun com 5 4 226 1 el7 elrepo x86 64 Open
  • Mysql数据库第十三课-----------sql语句的拔高3--------直冲云霄

    作者前言 作者介绍 作者id 老秦包你会 简单介绍 喜欢学习C语言和python等编程语言 是一位爱分享的博主 有兴趣的小可爱可以来互讨 个人主页 小小页面 gitee页面 秦大大 一个爱分享的小博主 欢迎小可爱们前来借鉴 sql语句的拔高
  • linux常用性能观测工具---硬件相关

    rdmsr 在Linux内核源码中提供了读写CPU MSR寄存器模块 使可以在用户空间直接读写MSR寄存器 开源社区提供msr寄存器读写工具msrtools 其中有两个命令 rdmsr wrmsr 要使rdmsr wrmsr命令真正可以读写