Kernel Linux 的cpu frequence的统计

customer有个需求就是希望通过system interface去显示每个cpu所对应的频率运行的时间。对于这个需求,刚好再重温下cpufreq的知识点。

1.CPU frequence的概念

CPU频率(也称为时钟频率)是指cpu内核工作的时钟频率,通常以赫兹(Hz)为单位表示。它反映了 CPU 每秒钟能够执行的时钟周期数。常见的单位包括 MHz(兆赫兹)和 GHz(吉赫兹),例如 3.5 GHz 表示每秒 35 亿个时钟周期。

CPU 频率是评估 CPU 性能的一个重要指标,但它并不完全代表 CPU 的实际运算能力。CPU 的性能还取决于其他因素,如指令集、缓存大小和流水线深度等。

因此,虽然较高的频率通常意味着更快的处理速度,但这并不是唯一的衡量标准。

2.CPU frequence的管理

kernel里主要是使用调频策略(governor)来进行对cpufreq的管理,是 Linux 系统中用于管理CPU 频率的机制。它决定了在不同负载和场景下,CPU 应该运行在什么频率。以下是一些常见的调频策略:

  1. performance:始终运行在最高频率,适用于需要最高性能的任务。

  2. powersave:始终运行在最低频率,适用于需要最大限度节省电能的场景。

  3. ondemand:根据系统负载动态调整频率,适用于日常使用。

  4. conservative:类似于 ondemand,但频率调整更平滑。

  5. userspace:允许用户空间程序手动设置频率,提供最大灵活性

不同的policy,对应的related cpu也不同的,对应支持的cpufreq也有所不同。通过调节policy下面不同的governor来切换不同的cpufreq。

如下是一个有40个possible cpu的PC,Linux system 显示有40个policy, 每个policy对应一个cpu,但是支持的governor是相同的。

ls /sys/devices/system/cpu/cpufreq/
policy0  policy10  policy12  policy14  policy16  policy18  policy2   policy21  policy23  policy25  policy27  policy29  policy30  policy32  policy34  policy36  policy38  policy4  policy6  policy8
policy1  policy11  policy13  policy15  policy17  policy19  policy20  policy22  policy24  policy26  policy28  policy3   policy31  policy33  policy35  policy37  policy39  policy5  policy7  policy9

cat /sys/devices/system/cpu/cpufreq/policy39/related_cpus
39

cat /sys/devices/system/cpu/cpufreq/policy39/scaling_available_governors
performance powersave

cat /sys/devices/system/cpu/cpufreq/policy39/scaling_cur_freq
800346

3.CPU frequence的运行时间统计

3.1 running时间的计算

1.使用percpu xarry保存cpufreq和对应的运行时间

struct cpu_freq_time {
    ktime_t total, begin;
};

st

引用中提到了TfidfTransformer,它用于统计vectorizer中每个词语的TF-IDF值。TF-IDF值是一种衡量词语在文本中重要性的指标。TF-IDF的计算涉及到两个部分:词频(TF)和逆文档频率(IDF)。TF指的是在一篇文档中某个词语出现的频率,而IDF指的是该词语在整个语料库中的逆文档频率。TfidfTransformer可以将词频矩阵统计成TF-IDF值。你可以使用sklearn库中的TfidfTransformer类来计算TF-IDF值。具体使用方法如下: ```python from sklearn.feature_extraction.text import TfidfTransformer # 创建TfidfTransformer对象 transformer = TfidfTransformer() # 将词频矩阵统计成TF-IDF值 tfidf = transformer.fit_transform(X) # 查看结果 print(tfidf.toarray()) ``` 引用中提到了CountVectorizer,它可以将文本中的词语转换为词频矩阵。CountVectorizer通过fit_transform函数计算各个词语出现的次数。你可以使用sklearn库中的CountVectorizer类来进行词频统计。具体使用方法如下: ```python from sklearn.feature_extraction.text import CountVectorizer # 创建CountVectorizer对象 vectorizer = CountVectorizer() # 将文本转换成词频矩阵 X = vectorizer.fit_transform(corpus) # 获取词袋中所有文本关键词 words = vectorizer.get_feature_names() # 查看词频结果 print(X.toarray()) ``` 综上所述,如果你想计算词频矩阵,可以使用CountVectorizer;如果你想将词频矩阵转换成TF-IDF值,可以使用TfidfTransformer。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Python3机器学习】sklearn中的CountVectorizer和TfidfTransformer](https://blog.youkuaiyun.com/YYIverson/article/details/104281104)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值