免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2617 | 回复: 8
打印 上一主题 下一主题

Sun Solaris 上 如何获得cpu的使用状况? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-25 11:28 |只看该作者 |倒序浏览
在Tru64上 用table()系统调用可以得到cpu的当前使用状况  包括用户指令时间 系统指令时间等。请问:在Sun Solaris上有没有类似的系统调用?我找了很久都没有找到。麻烦哪位有经验的ggjj指点一下啊!小女子拜谢了!!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-04-25 13:01 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

Solaris 系统的不清楚..
linux系统/proc下有个cpuinfo文件

论坛徽章:
0
3 [报告]
发表于 2005-04-25 15:29 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

楼上的大哥:能不能对PROC下面的文件目录结构详细给我讲解一下?谢谢了

论坛徽章:
0
4 [报告]
发表于 2005-04-25 16:09 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

[quote]原帖由 "sdzhhx"]楼上的大哥:能不能对PROC下面的文件目录结构详细给我讲解一下?谢谢了[/quote 发表:


看看man proc能不能找到每个字段的说明。

不同OS的proc不一样,就拿linux来说,不同kernel版本都不一样,只能看联机文档

论坛徽章:
0
5 [报告]
发表于 2005-04-25 16:16 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

Explore /proc filesystem     
     The /proc/ filesystem is a trick the Linux kernel uses to make certain internal information available to user-space processes. The kernel presents the information in virtual files in virtual directories. The files and directories of the /proc/ filesystems are virtual because the data is not actually stored on any sort of permanent storage like a hard disk; instead, the directories, files, and data within them are created dynamically in memory from raw kernel data whenever you attempt to read from them.

     Mounting the /proc/ filesystem:

     All Linux distributions automatically mount the /proc/ filesystem at boot time. It's not essential that this be done, but a number of programs rely on it, so it's wise.

     To see if the /proc filesystem is mounted on your machine, use the mount command without any arguments. You should see output that looks something like this:
     mount
..
proc on /proc type proc (rw)
..

If not, you can mount the /proc/ filesystem manually using the command:

mount -t proc proc /proc

and put the following entry into your /etc/fstab file so it is mounted automatically next time you reboot your machine:

proc /proc proc defaults 0 0

     Similarly by
looking at the values of the various parameters in the /proc file system,one can determine a lot about the current state of the kernel and theprocesses under way. For example, we have the dmesg command.

bash# dmesg

     Dmesg helps us determine the devices that have been detected and
initialized by the Linux kernel. We have utilities like "ps" and "top"
which give an accurate snapshot about the status of the processes running on the machine and a list of awake and sleeping processes currently running on the machine. Have you ever wondered where exactly the information dished out to you by the "ps" and the "top" process comes from? The information for these processes come from the /proc file system which is updated on the fly as changes take place in the processes.

   Since the /proc file system is a virtual file system and resides in
memory, a new /proc file system is created every time your Linux machine reboots. Take a look at the snapshot of the root directory shown above.
   The size of the proc directory is 0 and the last time of modification is the current date.

   Using the /proc/sys file system to parse kernel parameters.

   Another very important part of the /proc file system is the /proc/sys directory. Making changes in this directory enables you to make real time changes to certain kernel parameters. One fine example that can illustrate this is as follows.
   
     /proc/sys/net/ipv4/ip_forward

    The above file ip_forward has a default value of "0" which you can see  when you cat the contents of this file. This means that IP forwarding by  this machine isn't allowed by the kernel. But this configuration can be  changed in real time by just changing the value stored in this file from  "0" to "1". Thus we have enabled IP forwarding on our Linux machine.

               Contents of the /proc File System

    The output of the directory listing of the /proc directory is as follows.
    The actual listing was really lengthy. What's given below is a much
shorter version.

1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92 asound bus cmdline config.gz
cpuinfo devices dma fb filesystems fs ide interrupts ioports
kcore kcore_elf kmsg ksyms loadavg locks lvm mdstat meminfo
memstat misc modules mounts net partitions pci rtc scsi self
slabinfo stat swaps sys tty uptime version

    Every number and word that you see in the above snapshot are the contents of  the /proc directory. Lets learn a little more about the contents of the  directories with the numerical naming scheme.

          The numerical named directories
                 
1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92

The various directories that you see out here are the processes that were  running on our machine at the instant we took a snapshot of the /proc  file system. Let's look at the contents of one of these directories.

al:~ # cd /proc
al:/proc # ls -la 114
total 0
dr-xr-xr-x 3 named named 0 Nov 30 12:20 .
dr-xr-xr-x 89 root root 0 Nov 30 2000 ..
-r--r--r-- 1 root root 0 Nov 30 12:20 cmdline
lrwx------ 1 root root 0 Nov 30 12:20 cwd ->; /var/named
-r-------- 1 root root 0 Nov 30 12:20 environ
lrwx------ 1 root root 0 Nov 30 12:20 exe ->; /usr/sbin/named
dr-x------ 2 root root 0 Nov 30 12:20 fd
pr--r--r-- 1 root root 0 Nov 30 12:20 maps
-rw------- 1 root root 0 Nov 30 12:20 mem
lrwx------ 1 root root 0 Nov 30 12:20 root ->; /
-r--r--r-- 1 root root 0 Nov 30 12:20 stat
-r--r--r-- 1 root root 0 Nov 30 12:20 statm
-r--r--r-- 1 root root 0 Nov 30 12:20 status

    Before executing this command you need to log in as root because the various processes running on the system may be owned by various other users. As usual you have access only to the processes that you have started. After having logged in as root just execute the above command for  any of the directories and compare the output to what is listed above.

   Did you notice any similarity in the output you got and the one listed above? Yes, the contents of all the directories are the same irrespective of the directory you choose to view as these directories contain the various parameters and the status of the process whose PID is the name of the current directory that you are in. The values of the various parameters and status information would of course vary from process to process.

   Look at the first line of the output as viewed above.

-r--r--r-- 1 root root 0 Nov30 12:20 cmdline

"cmdline", this file contains the whole command line used to invoke the
process. The contents of this file are the command line arguments with all the parameters that one has passed to start the particular process. All the information contained in the file is without any formatting and any space between the command line arguments and various arguments.

lrwx------ 1 root root 0 Nov 30 12:20 cwd ->; /var/named

"cwd", as is visible from above this is a symbolic link to the current
working directory of that particular process.

-r-------- 1 root root 0 Nov 30 12:20 environ

"environ" contains all the environment variables defined for this
particular process in the form VARIABLE=value. As with cmdline, all the
information contained in the file is without any formatting or space
between the command line arguments and various arguments.

lrwx------ 1 root root 0 Nov 30 12:20 exe ->; /usr/sbin/named

"exe", this is a symbolic link to the executable file that the current
process is linked to.

dr-x------ 2 root root 0 Nov 30 12:20 fd

"fd", this directory contains the list file descriptors as opened by the particular process.

pr--r--r-- 1 root root 0 Nov 30 12:20 maps

"maps", when you print the contents of this named pipe, you can see the
parts of the process' address space which are currently mapped to a file. The fields, from left to right, are: the address space associated to this mapping, the permissions associated to this mapping, the offset from the beginning of the file where the mapping starts, the device on which the mapped file is located, the inode number of the file and finally, the name of the file itself.

lrwx------ 1 root root 0 Nov 30 12:20 root ->; /

"root", this is a symbolic link pointing to the directory which is the
root file system for the particular process.

-r--r--r-- 1 root root 0 Nov 30 12:20 status

"status", this file gives information regarding the name of the process, its current status, i.e sleeping or awake, its PID, its UID, its PPID and a lot of other general information. This information can be viewed in a simpler and structured manner by using tools like, "ps" and "top".

Generic information about the various /proc/* directories

This information has been sourced from the LASG, Chapter 3

The /proc filesystem

/proc/cpuinfo
Information about the processor, such as its type, make, model, and
performance.

/proc/devices
List of device drivers configured into the currently running kernel.

/proc/dma
Shows which DMA channels are being used at the moment.

/proc/filesystems
Filesystems configured into the kernel.

/proc/interrupts
Shows which interrupts are in use, and how many of each there have been.

/proc/ioports
Which I/O ports are in use at the moment.

没有时间翻译,请谅解!!如果有N多人强烈要求翻译,我会考虑的,呵呵!

论坛徽章:
0
6 [报告]
发表于 2005-04-25 23:34 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

可以用libkstat.so. 看看kstat.h

论坛徽章:
0
7 [报告]
发表于 2005-04-29 16:58 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

kstat_lookup()的函数原型是:

kstat_t *kstat_lookup(kstat_ctl_t *kc, char *ks_module, int
ks_instance, char *ks_name);

kstat_data_lookup()的原型是:
void *kstat_data_lookup(kstat_t *ksp, char *name);

关键是我如果要查cpu的idle时间,用户时间,以及系统指令时间,到底应该在ks_module ,ks_name 这两个形参传入什么样的实参?
]
还有*kstat_data_lookup的name参数也是如此

更重要的是 我在哪里能知道这个?
能不能 对函数kstat_lookup()的这两个参数 可能的值以及每个值的含义具体解释一下
man手册里没有 网上也没有查到。
谢谢各位了

论坛徽章:
0
8 [报告]
发表于 2005-04-29 19:27 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

% /sbin/prstat

论坛徽章:
0
9 [报告]
发表于 2005-04-30 03:54 |只看该作者

Sun Solaris 上 如何获得cpu的使用状况?

原帖由 "sdzhhx" 发表:
kstat_lookup()的函数原型是:

kstat_t *kstat_lookup(kstat_ctl_t *kc, char *ks_module, int
ks_instance, char *ks_name);

kstat_data_lookup()的原型是:
void *kstat_data_lookup(kstat_t *ksp, char *..........

http://developers.sun.com/solaris/articles/kstatc.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP