linux怎样读取memory spd
发布网友
发布时间:2022-04-22 20:21
我来回答
共2个回答
热心网友
时间:2022-05-02 15:10
smbus设备的bar5一般为smbus设备的io基地址。可以通过设备管理器查看。
Read SPD information
The SMBus DeviceID of memory bank0 is a0, bank1= 0xa2, and bank2 =0xa4
smbus操作的过程如下所示
a. start out Base+0, 1e
b. wait smbus ready
c. output Base+04, (DeviceID+1)
d. out Base+03, offset
e. out Base+02, 48H
f. wait 200ms
g. wait smbus ready
h. input base+05
i. OK
How to wait SMBus ready? Input Base+0, bit0==0 indicates smbus is ready, otherwise(bit0==1), smbus is busy
下面为转载的全文。
思路有了就是不知道怎么实现,请大家帮忙,引用系统软件开发 System Programming中的文章:
怎样读写SMBus上的Device―以获取Intel平台上Memory的SPD信息为例
How to access devices on SMBus--- Take reading SPD information (Intel platform) as example
firing -2005/04/13
0. Essential skills before you start:
l How to read/write PCI configuration space?
l How to read/write I/O space under WindowsNT/2000… platform?
And an Intel south bridge datasheet as reference
1. Basic steps
a. Enable SMBus controller
b. Get SMBus base address
c. Read SPD information, according the device IDs
2. Enable SMBus controller
LPC Interface Bridge Registers (D31:F0), Offset: F2h (FUNC_DIS),Bit3 :
Software sets this bit to disable the SMBus Host controller function.
0 = SMBus controller is enabled
1 = SMBus controller is disabled
This bit is set to 1(SMBus controller is disabled) by default. So, just set this bit to 0.
(How to make sure you have enabled SMBus controller? Go to ‘Device Manager’ and refresh it, and then check ‘System Device’, where you should find a PCI device named “Intel® 82801DB SMBus Controller” like.)
3. Get SMBus base address
SMBus Controller PCI Register (D31:F3), offset: 20~23H. That’s the SMBus base address. Just read this base address. Normally, the address could be 0x500 or 0x5000
4. Read SPD information
The SMBus DeviceID of memory bank0 is a0, bank1= 0xa2, and bank2 =0xa4
a. start
b. wait smbus ready
c. output Base+04, (DeviceID+1)
d. out Base+03, offset
e. out Base+02, 48H
f. wait 200ms
g. wait smbus ready
h. input base+05
i. OK
Note:
How to wait SMBus ready? Input Base+0, bit0==0 indicates smbus is ready, otherwise(bit0==1), smbus is busy
热心网友
时间:2022-05-02 16:28
随着linux广泛的使用,了解到服务器所运行的进程是势在必行的,作为初学者有必要总结自己的技术文档,根据自己的总结文档 写了如下的介绍。
ps 查看静态的进程信息
可以使用man 来查看 ps 的使用参数 以下是几个常使用到得,
a 显示当前终端的所有进程信息
u 使用以用户为主的格式输出进程信息
x 显示当前用户在所有终端下的进程信息
-e 显示 系统内的所有进程
# ps 只显示当前用户打开的进程
PID TTY TIME CMD
1949 pts/1 00:00:00 bash
2279 pts/1 00:00:00 ps
]# ps aux 显示系统中所有进程信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2072 620 ? Ss 16:07 0:01 init [3]
root 2 0.0 0.0 0 0 ? S< 16:07 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 16:07 0:00 [ksoftirqd/0]
root 6 0.0 0.0 0 0 ? S< 16:07 0:00 [khelper]
root 7 0.0 0.0 0 0 ? S< 16:07 0:00 [kthread]
root 173 0.0 0.0 0 0 ? S< 16:07 0:00 [cqueue/0]
root 176 0.0 0.0 0 0 ? S< 16:07 0:00 [khubd]
root 178 0.0 0.0 0 0 ? S< 16:07 0:00 [kseriod]
root 241 0.0 0.0 0 0 ? S 16:07 0:01 [pdflush]
root 243 0.0 0.0 0 0 ? S< 16:07 0:00 [kswapd0]
root 244 0.0 0.0 0 0 ? S< 16:07 0:00 [aio/0]
root 496 0.0 0.0 0 0 ? S< 16:07 0:00 [ata_aux]
root 501 0.0 0.0 0 0 ? S< 16:07 0:00 [kstriped]
root 510 0.0 0.0 0 0 ? S< 16:07 0:00 [ksnapd]
root 2087 0.1 2.2 31304 11408 ? Ss 19:58 0:00 /usr/sbin/httpd
root 2115 0.0 0.1 2528 640 ? S 19:59 0:00 /usr/local/apache2/bin/rotatel
root 2118 0.0 0.1 2528 640 ? S 19:59 0:00 /usr/local/apache2/bin/rotatel
apache 2119 0.0 1.2 31304 6380 ? S 19:59 0:00 /usr/sbin/httpd
注释 以上所显示代表的内容
user 启动该进程的用户账号名称
PID 该进程在系统中的ID 号
%cpu使用的cpu 百分比
%MEM 内存占用百分比
VSZ 占用虚拟内存的大小
RSS 占用物理内存的大小
TTY 该进程在那个终端运行
START 启动该进程的时间
TIME 该进程占用cpu的时间
COMMAND 启动该进程的命令的名称
2 top 动态显示系统进程信息
[root@www ~]# top
top - 20:08:54 up 4:01, 5 users, load average: 0.07, 0.17, 0.45
Tasks: 141 total, 1 running, 139 sleeping, 0 stopped, 1 zombie
Cpu(s): 6.1%us, 4.2%sy, 0.0%ni, 87.5%id, 1.7%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 515340k total, 433076k used, 82264k free, 20548k buffers
Swap: 522072k total, 84k used, 521988k free, 217348k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1884 root 15 0 100m 17m 10m S 1.5 3.6 0:05.93 gnome-terminal
241 root 15 0 0 0 0 S 0.2 0.0 0:01.49 pdflush
2491 root 18 0 2336 1036 800 R 0.2 0.2 0:00.17 top
2492 xiaowang 15 0 10192 3304 2172 S 0.2 0.6 0:00.32 vim
3957 root 15 0 41212 12m 8584 S 0.2 2.5 0:22.81 metacity
3961 root 15 0 83120 14m 9.8m S 0.2 2.8 0:03.07 gnome-panel
4035 root 15 0 70804 15m 10m S 0.2 3.0 0:13.07 wnck-applet
4637 root 15 0 12044 1160 940 S 0.2 0.2 0:11.90 scim-bridge
4638 root 15 0 16672 2184 1420 S 0.2 0.4 0:08.75 gnome-screensav
1 root 15 0 2072 620 532 S 0.0 0.1 0:01.42 init
注释以上显示代表的内容
第一行是任务队列信息,等同于同uptime 命令的执行结果。其内容如下
表示 当前系统时间 系统运行时间 登录用户数 平均负载
第二、三行为进程和CPU的信息。
Tasks: 141 total, 进程总数 1 running 正在运行的进程数
139 sleeping 休眠的进程数 0 stopped 停止的 1 zombie 僵死的进程数
Cpu(s): 6.1%us, 占用cpu百分比 sy 内核空间占用CPU百分比 ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比 wa 等待输入输出的CPU时间百分比
最后两行为内存信息。
内容如下:
Mem: 1 total 物理内存总量 used 使用的物理内存总量 free 空闲内存总量 buffers 用作内核缓存的内存量
Swap: total 交换区总量 used 使用的交换区总量 free 空闲交换区总量 cached 缓冲的交换区总量。
top 命令 参数
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
3 pgrep 命令 可以根据指定的进程名, 运行该进程的用户,进程所在终端等多种属性查询特定进程的PID号
pgrep -l mysqld
32597 mysqld_safe
32647 mysqld
pgrep -l -U 查看用户 运行进程的PID号
4 pstree 查看进程数
不带任何参数时 可以显示系统中所有用户的进程数结构
[root@www ~]# pstree
init─┬─acpid
├─atd
├─auditd─┬─audispd───{audispd}
│ └─{auditd}
├─automount───4*[{automount}]
├─avahi-daemon───avahi-daemon
├─bonobo-activati───{bonobo-activati}
├─bt-applet
├─clock-applet
├─crond
├─cupsd
├─2*[dbus-daemon]
├─dbus-launch
├─eggcups
├─escd───{escd}
├─events/0
├─gam_server
├─gconfd-2
├─gnome-keyring-d
pstree aux 将列出进程的PID 用户名 以及命令 信息
[root@www ~]# pstree -aup
init,1
├─acpid,3198
├─atd,3544
├─auditd,2467
│ ├─audispd,2469
│ │ └─{audispd},2480
│ └─{auditd},2468
├─automount,3296
│ ├─{automount},3297
│ ├─{automount},3298
│ ├─{automount},3301
│ └─{automount},3304
├─avahi-daemon,3575,avahi
│ └─avahi-daemon,3576
├─gnome-terminal,1884
│ ├─bash,1949
│ ├─bash,2241
│ │ └─su,4076 fjc
│ │ └─bash,4077,fjc
│ │ └─vim,4097 1.php
│ ├─bash,2295
│ │ └─pstree,4366 -aup
│ ├─bash,2494
│ ├─gnome-pty-helpe,1914
│ └─{gnome-terminal},1916
├─gnome-vfs-daemo,3980
├─gpm,3465 -m /dev/input/mice -t exps2
├─hald,3217,haldaemon
│ └─hald-runner,3218,root
│ ├─hald-addon-acpi,3225,haldaemon
│ ├─hald-addon-keyb,3233,haldaemon
│ └─hald-addon-stor,3242
├─hcid,3109
├─hidd,3267 –server
├─hpiod,3318
├─httpd,2087
│ ├─httpd,2119,apache
│ ├─httpd,2120,apache
│ ├─httpd,2121,apache
│ ├─httpd,2122,apache
│ ├─httpd,2123,apache
│ ├─httpd,2124,apache
│ ├─httpd,2125,apache
│ ├─httpd,2126,apache
│ ├─rotatelogs,2115 /home/xiaowang/logs/%Y%m%d%H.error_log 720048
│ ├─rotatelogs,2116 /home/xiaoli/logs/%Y%m%d%H.error_log 7200 480
│ ├─rotatelogs,2117 /home/xiaowang/logs/%Y%m%d%H.access_log 72004
│ └─rotatelogs,2118 /home/xiaoli/logs/%Y%m%d%H.access_log 7200480
查看某个用户使用的进程数结构信息
# pstree -ap fjc
bash,4077
└─vim,4097 1.php
还有许多参数的都可以在man 中一一的查看到