| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1755 人关注过本帖
标题:求助:硬件利用率低
只看楼主 加入收藏
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: 4
等 级:业余侠客
威 望:7
帖 子:235
专家分:286
注 册:2019-10-11
收藏
得分:4 
没看懂,是不是和挖矿一样,那就多开,尽可能多开160
2022-07-21 08:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:4 
是不是这意思:
16个计算过程
用单个进程(任务A)需1个小时
用16个进程同时运行,某进程(任务A)需5个小时

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

活到老,学到老!http://www.(该域名已经被ISP盗卖了)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
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:0 
操作系统为确保系统各任务的有效稳定运行,进程的CPU利用率应该是操作系统对所有进程CPU利用率的调度问题,进程也有优先级。
进程CPU利用率与进程获得的时间片多少有关
2022-07-21 12:09
sych
Rank: 4
等 级:业余侠客
威 望:7
帖 子:235
专家分:286
注 册:2019-10-11
收藏
得分:0 
他这个应该是算法有问题,数据没有隔离,导致各进程等待,正常1个小时的计算量,多开后变成了5个小时,明显的是各个进程相关性太强造成的
2022-07-21 12:30
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11771
专家分:43421
注 册:2006-5-13
收藏
得分:0 
要运行几十分钟甚至几百分钟才能完成,其计算工作量肯定不小。VFP擅长数据管理而非数据运算,建议用其他语言来解决运算问题。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2022-07-21 14:18
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏(1)
得分: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
快速回复:求助:硬件利用率低
数据加载中...
 
   



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

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