目前的思路是使用task_struct的se字段中的进程总执行时间,然后使用msleep休眠几秒后再次获得进程执行时间,然后用两个时间相减再除以时间差得到cpu利用率。可是休眠前后得到的进程占用cpu时间相同,计算的利用率总是为0,请问该如何解决?
使用msleep休眠,休眠期间进程是不占用CPU的。
遇到这个问题,您可以尝试以下解决方案:
首先,您需要获取任务_struct结构体中的进程总执行时间(SE_执行时间)。您可以通过调用task_struct_time_info()函数来获取。
然后,您需要使用msleep函数来休眠一段时间,例如5秒。在休眠期间,您的程序将暂停执行,而SE_执行时间将发生变化。
接着,您需要再次调用task_struct_time_info()函数来获取当前进程的执行时间。
然后,您需要将这两个时间相减,并除以它们的时间差。这样,您就得到了进程的CPU利用率。
需要注意的是,在休眠期间,进程执行时间将被暂停,因此SE_执行时间会发生变化。但是,由于您的程序在休眠期间不执行,因此它们的时间差是0。
因此,您需要将这两个时间相加,并除以它们的时间总和,才能得到进程的CPU利用率。
希望这可以帮助您解决该问题。如果还有任何问题,请随时问我。