linux计算运行时长,在Linux上,“正常运行时间”何时开始计算?

在我的系统上,它的正常运行时间来自/proc/uptime:

$ strace -eopen uptime

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

open("/lib/libproc-3.2.8.so", O_RDONLY|O_CLOEXEC) = 3

open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3

open("/proc/version", O_RDONLY) = 3

open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3

open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3

open("/proc/uptime", O_RDONLY) = 3

open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4

open("/proc/loadavg", O_RDONLY) = 4

10:52:38 up 3 days, 23:38, 4 users, load average: 0.00, 0.02, 0.05

/proc/uptime

This file contains two numbers: the uptime of the system

(seconds), and the amount of time spent in idle process

(seconds).

proc文件系统包含一组伪文件。这些不是真正的文件,它们看起来像文件,但是它们包含内核直接提供的值。每次您读取文件(例如)时/proc/uptime,都会立即重新生成其内容。proc文件系统是内核的接口。

在文件的Linux内核源代码fs/proc/uptime.c的第49行,你会看到一个函数调用:

proc_create("uptime", 0, NULL, &uptime_proc_fops);

这将创建一个称为的proc文件系统条目uptime(通常将procfs安装在之下/proc),并将一个函数与其关联,该函数定义对该伪文件及其相关函数的有效文件操作。在正常运行的情况下,它只是read()和open()操作。但是,如果您追溯这些功能,则最终将在此处计算正常运行时间。

内部有一个计时器中断,它定期更新系统正常运行时间(其他值除外)。timer-interupt滴答的间隔由preprocessor-macro HZ定义,其确切值在内核配置文件中定义并在编译时应用。

空闲时间和CPU周期数以及频率HZ(每秒周期数)可以自上次引导以来的数量(秒)进行计算。

要解决您的问题:“正常运行时间”从什么时候开始算起?

由于正常运行时间是内核内部值,每个周期都会增加一次,因此它在内核初始化时开始计数。也就是说,当第一个周期结束时。即使在挂载任何东西之前,也就是在引导加载程序将控制权交给内核映像之后。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值