内核统计的最大值

2024-03-29 09:06:54 发布

您现在位置:Python中文网/ 问答频道 /正文

问:内核统计计数器的最大值是多少?如何在python代码中处理它?你知道吗

上下文:我根据内核统计信息计算一些统计信息(例如,/proc/partitions—它将是定制的pythoniostat版本)。但是我有一个溢出值的问题-负值。原始iostat代码https://github.com/sysstat/sysstat/blob/master/iostat.c注释:

* Counters overflows are possible, but don't need to be handled in
* a special way: The difference is still properly calculated if the
* result is of the same type as the two values.

我的语言是python,在我的例子中需要注意溢出。可能还取决于体系结构(32/64)。我试过2^64-1(64位系统),但没有成功。你知道吗


Tags: the代码https版本github信息is计数器
1条回答
网友
1楼 · 发布于 2024-03-29 09:06:54

以下函数适用于32位计数器:

def calc_32bit_diff(old, new):
  return (new - old + 0x100000000) % 0x100000000

print calc_32bit_diff(1, 42)
print calc_32bit_diff(2147483647, -2147483648)
print calc_32bit_diff(-2147483648, 2147483647)

这显然是行不通的,因为在两次连续的读取之间,计数器会多次环绕(但是其他方法也行不通,因为信息已经无法恢复地丢失了)。你知道吗

编写一个64位的版本留给读者作为练习。:)

相关问题 更多 >