`

让多核CPU占用率曲线听你指挥(Linux实现)——《编程之美》1.1继续学习

 
阅读更多

本回将尝试在Linux环境下能否在系统监视器中画出一个正弦曲线。本人环境为Ubuntu 11.04.

基本思想还是和Windows下面的相同,更换系统调用,便可以实现功能的迁移。



gettimeofday()函数用来取得当前时间(微秒,百万分之一秒)。并通过参数传递给结构体timeval类型的tms。

int gettimeofday(struct timeval *tv, struct timezone *tz);

tz用来获取时区信息。不做介绍。

结构体timeval的定义为:

struct timeval

{

time_t tv_sec; //seconds

suseconds_t tv_usec; //microseconds

};

tz如果是NULL的话将不传递时区信息。tv提供秒为单位的和微妙为单位的从Epoch开始的计数。

结构体timeval的域为类型long的域。

此函数返回0,表示成功,-1表示失败。

Windows中,GetTickCount返回的是从系统启动到现在的毫秒。

int usleep(useconds_t usec);

定义在头文件unistd.h中。它使当前进程挂起至少usec微秒(百万分之一秒).睡眠时间可能会被任意系统活动或进程切换开销或系统计时器的精确度而轻微延迟。成功时返回0,错误时返回-1.

或者使用clock()来得到系统时间也是可以的。它返回从进程启动到现在经历的时间,单位是毫秒(千分之一秒)。定义在头文件time.h下.

clock_t clock(void);

相应代码如下。



但对于多核CPU,如何限制进程在一个CPU上运行呢?

如何察看某个进程在哪个CPU上运行:

在控制台中输入:

#top -d 1

之后按下f.进入top CurrentFields设置页面:

选中:j: P= Last used cpu (SMP)

则多了一项:P 显示此进程使用哪个CPU。

经过试验发现:同一个进程,在不同时刻,会使用不同CPU Core.这应该是Linux Kernel SMP处理的。

本程序通过这个方法查看,将会在多个CPU上运行。

想要让它在一个CPU上执行,可以这样做:

1.下载包schedtool.

在控制台中输入:sudo apt-get install schedtool,然后输入你的密码。

schedtool是Linux下用来查询或设置CPU状态的工具。通过不同的参数可以查看或设置不同的属性。

[-0|-N] [-1|-F] [-2|-R] [-3|-B] [-4|-I] [-5|-D]
        [-M policy]
        [-a affinity]
        [-p prio]
        [-n nice_level]
        [-e command [arg ...]]
        [-r]
        [-v]
        [-h]

我们这里要用到的是 -a和-e。其他可以参考这里:

http://linux.die.net/man/8/schedtool
-a用来设置进程在哪个CPU上运行。-a的参数为:
0x1 表示只运行在CPU0(00000001)
0x2 表示只运行在CPU1(00000010)
0x4表示紫云行在CPU2(00000100)
0x8表示只运行在CPU3(00001000)
etc.
或者,多CPU运行可以这样表示,
0x7表示可以运行在CPU0,1,2 (00000111)
0x5表示可运行在CPU0,2 (00000101)
以此类推。
-e用来通过指定的参数来执行命令。后面的参数为控制台命令。

在Linux下,如何确认是多核或多CPU:

#cat /proc/cpuinfo

如果有多个类似以下的项目,则为多核或多CPU:

processor: 0

......

processor: 1

在编译后,我们执行命令:sched -a 0x1 -e ./桌面/sin

可以通过上面介绍的方法查看进程sin是否在同一个CPU上运行。

然后就可以通过系统监视器查看运行结果啦!

运行结果(橙色线):

还有一段Python的代码,运行是与上面类似的,这个来自于网上^_^:



在控制台下输入命令:sched -a 0x1 -e python ./桌面/sin_p.py(此处写你源文件的路径).即可!

分享到:
评论

相关推荐

    visual c++让多核CPU占用率达到100%

    本文将详细探讨如何使用Visual C++使多核CPU占用率达到100%,以及与之相关的OpenMP技术。 首先,`#pragma omp parallel` 是OpenMP中的一种指令,用于指示编译器创建一个并行区域。当执行到这个指令时,编译器会根据...

    linux-让多核CPU达到指定的CPU使用率脚本

    "linux-让多核CPU达到指定的CPU使用率脚本"是一个旨在提升机器CPU使用率的实用工具,它能帮助系统管理员更好地控制和利用计算资源。下面我们将详细探讨相关知识点。 1. **CPU使用率**: - CPU使用率是指CPU在单位...

    CPU占用率检测模块(易语言)

    在IT领域,CPU占用率是衡量计算机性能的重要指标之一,它反映了处理器在一段时间内执行任务的繁忙程度。易语言是一款中国本土开发的编程语言,旨在让编程变得更加简单、直观。本模块“CPU占用率检测模块”是专为...

    WindowsVC++获取多核CPU各核使用率

    《Windows系统CPU内存网络性能统计第三篇 CPU 多核CPU各核使用率 C#》 http://blog.csdn.net/morewindows/article/details/8678382 配套程序,能获取多核CPU各核的使用率,已经测试,能在WinXP及Win7运行。

    易语言取进程CPU占用率源码

    总的来说,易语言取进程CPU占用率的源码是IT领域中一个实用的编程示例,它涵盖了进程管理、系统资源监控和多核处理器利用等关键概念。对于学习易语言或者希望提升系统级编程能力的开发者来说,这是一个很好的学习...

    多核cpu和gpu系统上椭圆曲线点乘并行计算研究.pdf

    多核cpu和gpu系统上椭圆曲线点乘并行计算研究.pdf

    linux cpu 使用率

    ### Linux CPU使用率监测原理与实现 #### 一、引言 CPU使用率是衡量系统负载及性能的重要指标之一,在Linux环境下,通过监控CPU使用率可以帮助我们更好地理解系统的运行状态,进而进行有效的优化或资源分配。 ####...

    并行计算简介和多核CPU编程Demo.pdf

    该资源主要介绍了并行计算的概念、多核CPU编程的 Demo 及其实现。下面是从该资源中提取的知识点: 并行计算简介 并行计算是计算机科学中的一种技术,通过将计算任务分解成多个子任务,从而提高计算速度。随着多核...

    WIN7多核下CPU各个核使用率的值

    在Windows 7操作系统中,了解和监测CPU各个核心的使用率是系统性能分析的重要环节,尤其是在多核处理器的环境下。CPU使用率反映了处理器在给定时间内的繁忙程度,它可以帮助我们诊断系统性能瓶颈,优化任务分配,...

    Linux多核绑定硬件中断到不同 CPU

    Linux 多核绑定硬件中断到不同 CPU Linux 多核系统中,硬件中断是一件很消耗 CPU 资源的事情。如果能够把大量硬件中断分配给不同的 CPU(core),那么将会减轻单一 CPU 的负担,提高整体处理效率。这个技术被称为 ...

    操作系统CPU占用率控制实验报告

    实验中提到,在多核环境下可能无法如预期那样实现特定的CPU占用率曲线。 8. **正弦曲线模拟**: 实验中还涉及到了通过sin函数来模拟CPU占用率变化,使其呈现正弦波形。这需要根据sin函数的值来动态调整繁忙和空闲...

    获取多核CPU使用率,设置CPU亲和性

    本文将深入探讨如何获取多核CPU的使用率、设置CPU亲和性、调整并发线程数和优先级,以及如何将线程绑定到特定的CPU核心上运行。我们将以`SystemInfoDemo`为例进行讲解。 1. **获取多核CPU使用率**: 获取CPU使用率...

    vc 获取指定进程的cpu占用率和内存使用量

    在多核CPU环境下,为了获取总体CPU占用率,你需要累加所有核心的使用时间,因为每个核心的使用时间是独立的。对于内存占用,GetProcessMemoryInfo返回的信息已经考虑了多线程和多进程的共享内存。 最后,将这些功能...

    基于Pytorch分布式包的单机多核CPU实现横向联邦学习项目源码+文档说明(毕业设计)

    基于Pytorch分布式包的单机多核CPU实现横向联邦学习项目源码+文档说明(毕业设计),本资源中的源码都是经过本地编译过可运行的,评审分达到98分,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足...

    用微机多核CPU并行方式运转WRF模式.pdf

    作者通过实例展示了如何在Linux环境下对WRF模式进行并行编译,以实现多核CPU上的并行运算。 实验结果显示,WRF模式在多核CPU构建的Linux单机集群中并行运行的效率很高,且CPU数量越多,运算速度越快。这种并行方式...

    Linux多核编程系列之调度亲和性.pdf

    Linux多核编程系列之调度亲和性

    AMD多核CPU补丁XP专用1.3.2.0053版

    AMD多核CPU补丁XP专用1.3.2.0053版是一款专为Windows XP操作系统设计的软件,旨在解决AMD多核处理器与特定应用程序,尤其是游戏的兼容性问题。在早期的操作系统如Windows XP中,对于多核处理器的支持并不完善,可能...

    linux下调度器 多核 CPU绑定 schedule函数等等

    在Linux操作系统中,调度器是核心组件之一,它负责管理进程的执行,确保系统资源的高效利用。在多核CPU环境中,调度器的工作尤为重要,因为它需要处理多个处理器之间的任务分配。本文将深入探讨Linux下的调度器、...

    Linux多核编程系列之调度亲和性

    ### Linux多核编程系列之调度亲和性 #### 一、引言 随着现代计算机硬件技术的发展,多核处理器已经成为主流配置。对于开发者而言,如何有效地利用这些硬件资源以提高程序性能成为了一项重要的任务。在Linux环境下...

Global site tag (gtag.js) - Google Analytics