免费注册 查看新帖 |

Chinaunix

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

求救,vmstat.iostat.prstat的工作原理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-18 17:08 |只看该作者 |倒序浏览
每次执行这些命令时,是否读取内存中的一个文件取得系统数据\r\n还是执行时去临时收集\r\n如果是读取文件的话,文件名叫什么,请高手指教

论坛徽章:
7
荣誉会员
日期:2011-11-23 16:44:17水瓶座
日期:2013-08-28 21:20:16丑牛
日期:2013-10-02 21:01:462015年迎新春徽章
日期:2015-03-04 09:54:45操作系统版块每日发帖之星
日期:2016-06-05 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-20 08:24:0515-16赛季CBA联赛之四川
日期:2016-08-18 15:02:02
2 [报告]
发表于 2006-05-18 17:11 |只看该作者
没有关心过这个问题,有一定难度。你运行truss iostat 1 1你看看能不能看出从哪里调用的文件。

论坛徽章:
0
3 [报告]
发表于 2006-05-19 00:54 |只看该作者
怎么没人回阿\r\n我自己顶

论坛徽章:
0
4 [报告]
发表于 2006-05-19 09:20 |只看该作者
  1. bash-2.03$ truss vmstat 2\r\nexecve(\"/usr/bin/vmstat\", 0xFFBEFCCC, 0xFFBEFCD8)  argc = 2\r\nmmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1,\r\n 0) = 0xFF3A0000\r\nresolvepath(\"/usr/lib/ld.so.1\", \"/usr/lib/ld.so.1\", 1023) = 16\r\nopen(\"/var/ld/ld.config\", O_RDONLY)             = 3\r\nfstat(3, 0xFFBEF558)                            = 0\r\nmmap(0x00000000, 104, PROT_READ, MAP_SHARED, 3, 0) = 0xFF390000\r\nclose(3)                                        = 0\r\nstat(\"/usr/lib/libkstat.so.1\", 0xFFBEF3F4)      = 0\r\nopen(\"/usr/lib/libkstat.so.1\", O_RDONLY)        = 3\r\nfstat(3, 0xFFBEF3F4)                            = 0\r\nmmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF380000\r\nmmap(0x00000000, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF360000\r\nmmap(0xFF372000, 460, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,\r\n8192) = 0xFF372000\r\nmunmap(0xFF362000, 65536)                       = 0\r\nmemcntl(0xFF360000, 2244, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0\r\nclose(3)                                        = 0\r\nstat(\"/usr/lib/libc.so.1\", 0xFFBEF3F4)          = 0\r\nopen(\"/usr/lib/libc.so.1\", O_RDONLY)            = 3\r\nfstat(3, 0xFFBEF3F4)                            = 0\r\nmmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3\r\n80000\r\nmmap(0x00000000, 802816, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF280000\r\nmmap(0xFF33C000, 24764, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3\r\n, 704512) = 0xFF33C000\r\nmunmap(0xFF32C000, 65536)                       = 0\r\nmemcntl(0xFF280000, 113516, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0\r\nclose(3)                                        = 0\r\nstat(\"/usr/lib/libdl.so.1\", 0xFFBEF3F4)         = 0\r\nopen(\"/usr/lib/libdl.so.1\", O_RDONLY)           = 3\r\nfstat(3, 0xFFBEF3F4)                            = 0\r\nmmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3\r\n80000\r\nclose(3)                                        = 0\r\nstat(\"/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1\", 0xFFBEF204) = 0\r\nopen(\"/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1\", O_RDONLY) = 3\r\nfstat(3, 0xFFBEF204)                            = 0\r\nmmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF350000\r\nmmap(0x00000000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF270000\r\nclose(3)                                        = 0\r\nmunmap(0xFF350000, 8192)                        = 0\r\nsysconfig(_CONFIG_PAGESIZE)                     = 8192\r\nsysconfig(_CONFIG_CLK_TCK)                      = 100\r\nopen(\"/dev/kstat\", O_RDONLY)                    = 3\r\nbrk(0x00024888)                                 = 0\r\nbrk(0x00026888)                                 = 0\r\nioctl(3, KSTAT_IOC_CHAIN_ID, 0x00000000)        = 376\r\nioctl(3, KSTAT_IOC_READ, \"kstat_headers\")       Err#12 ENOMEM\r\nbrk(0x00026888)                                 = 0\r\nbrk(0x00030888)                                 = 0\r\nioctl(3, KSTAT_IOC_READ, \"kstat_headers\")       = 376\r\nbrk(0x00030888)                                 = 0\r\nbrk(0x00032888)                                 = 0\r\nbrk(0x00032888)                                 = 0\r\nbrk(0x00034888)                                 = 0\r\nbrk(0x00034888)                                 = 0\r\nbrk(0x00036888)                                 = 0\r\nbrk(0x00036888)                                 = 0\r\nbrk(0x00038888)                                 = 0\r\nbrk(0x00038888)                                 = 0\r\nbrk(0x0003A888)                                 = 0\r\nioctl(3, KSTAT_IOC_READ, \"system_misc\")         = 376\r\nioctl(3, KSTAT_IOC_READ, \"cpu_stat0\")           = 376\r\nsigaction(SIGCONT, 0xFFBEFB48, 0xFFBEFBC8)      = 0\r\nioctl(3, KSTAT_IOC_READ, \"sysinfo\")             = 376\r\nioctl(3, KSTAT_IOC_READ, \"vminfo\")              = 376\r\nioctl(3, KSTAT_IOC_READ, \"system_misc\")         = 376\r\nioctl(3, KSTAT_IOC_READ, \"cpu_stat0\")           = 376\r\nioctl(3, KSTAT_IOC_READ, \"dad0\")                = 376\r\nioctl(3, KSTAT_IOC_READ, \"dad1\")                = 376\r\nioctl(3, KSTAT_IOC_READ, \"sd0\")                 = 376\r\nioctl(1, TCGETA, 0xFFBEED8C)                    = 0\r\n procs     memory            page            disk          faults      cpu\r\nwrite(1, \"   p r o c s           m\".., 75)      = 75\r\n r b w   swap  free  re  mf pi po fr de sr dd dd s0 --   in   sy   cs us sy id\r\nwrite(1, \"   r   b   w       s w a\".., 79)      = 79\r\n 0 0 0 2481624 501464 2   6  2  0  0  0  0  4  0  0  0  320  398  226  1  1 98\r\nwrite(1, \"   0   0   0   2 4 8 1 6\".., 79)      = 79\r\n
复制代码
\r\n\r\n\r\n\r\n我做了一下,得到上面的结果。\r\n分析一下:\r\nstat(\"/usr/lib/libkstat.so.1\", 0xFFBEF3F4)      = 0\r\nopen(\"/usr/lib/libkstat.so.1\", O_RDONLY)        = 3\r\n上面的两句话应该是调用共享的库libkstat.so.1,听名字就应该跟kernel的state或status有关,应该就是通过这个程序来得到结果吧\r\n\r\n\r\nioctl(3, KSTAT_IOC_READ, \"system_misc\"         = 376\r\nioctl(3, KSTAT_IOC_READ, \"cpu_stat0\"           = 376\r\nsigaction(SIGCONT, 0xFFBEFB48, 0xFFBEFBC      = 0\r\nioctl(3, KSTAT_IOC_READ, \"sysinfo\"             = 376\r\nioctl(3, KSTAT_IOC_READ, \"vminfo\"              = 376\r\nioctl(3, KSTAT_IOC_READ, \"system_misc\"         = 376\r\nioctl(3, KSTAT_IOC_READ, \"cpu_stat0\"           = 376\r\nioctl(3, KSTAT_IOC_READ, \"dad0\"                = 376\r\nioctl(3, KSTAT_IOC_READ, \"dad1\"                = 376\r\nioctl(3, KSTAT_IOC_READ, \"sd0\"                 = 376\r\nioctl(1, TCGETA, 0xFFBEED8C)                    = 0\r\n\r\n上面的这些咚咚应该就是具体的kernel的那些变量吧。\r\n\r\n\r\n\r\n应该差不多了吧,这些信息?

论坛徽章:
0
5 [报告]
发表于 2006-05-19 10:13 |只看该作者
linux下有没类似truss这个工具呀?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP