免费注册 查看新帖 |

Chinaunix

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

[日期时间] 关于某个大型仿真耗费时间,cpu,内存的请教 [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-08 20:41 |只看该作者 |倒序浏览
本帖最后由 weichanghe2000 于 2012-10-08 22:40 编辑

大家好,我有一个大型的 软件仿真,我在 cshell 脚本1.csh 中  用了 date 函数:
1.csh内容为
set time1=`date`
....
..... 省略号 是 调用软件仿真,大概仿真要持续4-5天
set time2=`date`
top -b n 1 >1.log

我现在想知道
1. 仿真持续 多少秒,也就是 time2 与 time1 相隔多少秒?
我想直接拿time2 -time1,但是这样不对,因为存在多种情况:
如:time1和time2不是同一个月,time1是9月29号,time2是 10月5号;
    time1和time2是同一个月,  time1是9月10号,time2是 9月15号;
    以及 阳历这个月是 28,29,30天,或者31天都相关

查了很多帮助,用 /usr/bin/time -f %e 1.csh 可以得到 脚本 1.csh 运行 花费多少秒。
2.  但是我还想 得到 1.csh 运行 耗费了多少CPU(top命令中的 %CPU 那列),多少memory(top命令中的RES列)?可是问题是:在脚本末尾写上 top -b n 1 >1.log 时,此时 1.csh 已经运行完成,得不到 1.csh 耗费的 %CPU 和 RES 。
于是我用 /usr/bin/time  -f %M 1.csh 和  /usr/bin/time  -f %P 1.csh  , 可是结果我发现 这 2个 命令的返回值 与 top 命令的CPU% 和 RES 值 完全不一样,相差十万八千里。
因为 /usr/bin/time  中 %M 和 %P 的定义跟 top 命令中的 CPU 和 RES 列完全不是一个物理含义。

求高手指教。可能讲得有点啰嗦。
现在把求助归纳总结下:
1. 如何 算出 这个脚本 运行了多少秒,把这个 秒数重定向到1.log? 我用的是 /usr/bin/time -f %e 1.csh 2> 1.log
2. 如何 用 top 命令,运行 1.csh ,所需要耗费的 CPU 和 RES 重定向到 1.log ?我在脚本末尾用 top -b n 1 >1.log ,但此时 1.csh 却已经完成了,根本得不到 1.csh 耗费的 CPU 和 RES,如何做到?

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2012-10-08 22:41 |只看该作者
秒数计算也可以这种做:把两个时间点分别转成秒数,然后相减。
http://bbs.chinaunix.net/thread-1772999-1-1.html

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
3 [报告]
发表于 2012-10-09 08:33 |只看该作者
第一个问题用epoc 时间解决。
  1. time1=`date +%s`
  2. time2=`date +%s`
复制代码
两者相减就可以得到时间间隔秒数。

至于CPU 和内存使用, top命令可能不够用,不知道你的系统是否支持prstat 命令。 可否定制个用户来运行这个程序, 那么运行下面的命令就可以得到该用户占用的CPU和内存
  1. prstat -tu ACCOUNT
复制代码
那么在运行1.csh的同时,另外开个console ,定期运行上面的prstat 命令,就可以可以得到一段之间内,该脚本占用的CPU和内存使用情况。

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
4 [报告]
发表于 2012-10-09 08:45 |只看该作者
回复 4# rdcwayx


  我的 linux,不支持 prstat 命令

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
5 [报告]
发表于 2012-10-09 08:56 |只看该作者
回复 3# Shell_HAT


谢谢大侠,想问下

#日期转秒数
function date2seconds {
    echo "$*" | awk '{
        z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;
        j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;
        j=j*86400+$4*3600+$5*60+$6
        print j
    }'
}

date2seconds `echo "2010-07-21 00:00:00" | sed 's/-/ /g;s/:/ /g'`

我是新手,能否帮忙解释下这段代码?如
z代表什么? =号 右边的 14 代表什么?
y应该是年份,但是4800 代表什么?
m应该是月份,减掉 3代表什么?
j看起来是天数,153代表什么?除以5 是什么? int(y/4)-int(y/100)+int(y/400) 应该是 判断 闰年, 2472633又 代表什么?

水平很菜,疑问很多,望大侠指教,多谢。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
6 [报告]
发表于 2012-10-09 08:56 |只看该作者
linux top 和 ptree 应该有类似的功能,你自己man一下。
  1. top -p PID
复制代码
应该可以看到CPU 和内存使用

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
7 [报告]
发表于 2012-10-09 09:10 |只看该作者
回复 7# rdcwayx


谢谢大侠,top -p pid 确实可以 动态的显示 %CPU 和 RES 列,
如果我的脚本运行 5天左右,也就是说,我不知道我的脚本 何时 结束,所以 就没法估计 程序何时结束,然后运行 top -p pid 来查询。
因为程序1.csh 结束后,运行top -p pid,这个 pid 已经被 释放了。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2012-10-09 09:15 |只看该作者
本帖最后由 rdcwayx 于 2012-10-09 11:15 编辑

我在前面已经说了, 你需要另开个console, 定期(比如每分钟,或者每五分钟)运行top -p pid 命令,这样你可以到到CPU 和内存使用列表。

你只能记录在某个时间点上 CPU 和内存的使用量。
  1. while true
  2. do
  3.   date
  4.   top -p $pid 0 1  >> output
  5. done
复制代码

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
9 [报告]
发表于 2012-10-09 10:21 |只看该作者
回复 9# rdcwayx


  明白,多谢大侠,是获取 一些 离散的时间点 上的 cpu 和 mem 信息

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2012-10-11 18:46 |只看该作者
回复 7# weichanghe2000


    数学问题,没啥意思,会复制粘贴就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP