标题:求助:硬件利用率低
只看楼主
yechuxing
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2022-3-9
结帖率:33.33%
已结贴  问题点数:20 回复次数:16 
求助:硬件利用率低
目前一共有16个计算任务,
单独运算任务A时需1个小时。将16个任务同时运算时(将VFP复制16份同时独立运行,类似多线程计算),任务A需5个小时,其他15个任务也差不多同时完成。
无论采用哪种方式,cpu利用率大约40%,内存利用率大约30%,硬盘几乎闲置。好几个小时的计算过程,程序计算结果正确,硬件利用率却这么低,问题到底在哪?
软硬件环境:11代i7/16G/512G m2.SSD/Win10 64bit

本人业余爱好者,求教高手。
搜索更多相关主题的帖子: 任务 小时 硬件 利用率 计算 
2022-07-20 22:07
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:4 
没看懂,是不是和挖矿一样,那就多开,尽可能多开160
2022-07-21 08:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
是不是这意思:
16个计算过程
用单个进程(任务A)需1个小时
用16个进程同时运行,某进程(任务A)需5个小时

2022-07-21 08:21
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:4 
我理解为:
单个任务A运行需1个小时,16个任务全部运行结束需要16个小时;
将16个任务同时运行,全部结束约5个小时。

活到老,学到老! http://www. E-mail:hu-jj@
2022-07-21 09:48
yechuxing
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2022-3-9
得分:0 
回复 3楼 吹水佬
3楼、4楼的理解都对。
16个计算过程
用单个进程(任务A)需1个小时
用16个进程同时运行,某进程(任务A)需5个小时,其余15个进程也一同完成
单个任务A运行需1个小时,16个任务全部运行结束需要16个小时;
将16个任务同时运行,全部结束约5个小时。

我的疑问:计算机是i7 16核的,要连续计算几个小时,说明任务大计算机忙不过来。可所有硬件利用率都低,说明计算机很闲啊。
这很矛盾啊,哪出问题了。怎样提高硬件利用率,提高程序速度?
不是挖矿,主要利用CPU、内存运算。表格数据都采用临时表,在内存中作查找、筛选等运算。
2022-07-21 10:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
操作系统为确保系统各任务的有效稳定运行,进程的CPU利用率应该是操作系统对所有进程CPU利用率的调度问题,进程也有优先级。
进程CPU利用率与进程获得的时间片多少有关
2022-07-21 12:09
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:0 
他这个应该是算法有问题,数据没有隔离,导致各进程等待,正常1个小时的计算量,多开后变成了5个小时,明显的是各个进程相关性太强造成的
2022-07-21 12:30
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
要运行几十分钟甚至几百分钟才能完成,其计算工作量肯定不小。VFP擅长数据管理而非数据运算,建议用其他语言来解决运算问题。

活到老,学到老! http://www. E-mail:hu-jj@
2022-07-21 14:18
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用yechuxing在2022-7-20 22:07:46的发言:

目前一共有16个计算任务,
单独运算任务A时需1个小时。将16个任务同时运算时(将VFP复制16份同时独立运行,类似多线程计算),任务A需5个小时,其他15个任务也差不多同时完成。
无论采用哪种方式,cpu利用率大约40%,内存利用率大约30%,硬盘几乎闲置。好几个小时的计算过程,程序计算结果正确,硬件利用率却这么低,问题到底在哪?
软硬件环境:11代i7/16G/512G m2.SSD/Win10 64bit

本人业余爱好者,求教高手。

可以从如下方面试试


主要相关API有:
SetPriorityClass
GetCurrentProcess

SetProcessAffinityMask()
GetSystemInfo()
SetThreadAffinityMask()



[此贴子已经被作者于2022-7-22 13:10编辑过]

2022-07-21 15:52
yechuxing
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2022-3-9
得分:0 
回复 7楼 sych
我也这样怀疑过,也做了一些隔离措施,例如vfp6.0程序我复制了16份,我编写的项目程序也复制了16份,使用的表格程序也是16份,应该是各自独立的,不知怎么就这么慢。
我的编写的程序相互独立,不用交换数据。我不确定16份VFP6.0在运行时是否要交换信息,或要等待同一关节点?本想多开提高效率,结果效果不太好。
2022-07-21 16:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509618-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052368 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved