首页
社区
课程
招聘
[求助]很多商业软件是按照CPU核数、服务数买的,这是怎么做到的?
发表于: 2013-8-26 14:56 7412

[求助]很多商业软件是按照CPU核数、服务数买的,这是怎么做到的?

2013-8-26 14:56
7412
普通针对具体业务功能的C语言编程,貌似并不能限制这个。是不是特地针对安装软件的计算机进行了CPU情况的检查,然后据检查结果封锁掉软件功能的可用性啊!?

这个是可以做到的,但是如何在计算机CPU、内存、存储线性或非线性增加时,体现出特定的针对性的性能提升呢?

//我说的并不是那种增加点硬件无论如何都能体现出来的性能提升。//是不是在业务功能代码之上有一层识别硬件(变更与现状),并且分配代码到不同CPU寄存器、存储、内存上的调度程序代码啊?貌似这个属于系统级代码,应用程序没法自己实现吧!?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
普通针对具体业务功能的C语言编程,貌似并不能限制这个     你读读。 能 读通么
2013-8-26 15:33
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哥们儿,我觉得说的很明白,你要是不明白可以有针对性的问。我说的这种情况是针对Oracle等商用软件的,他们卖的时候都是类似这么卖的。这不是什么黑客偏门的东西。你要是接触过肯定明白我说的是什么。
2013-8-26 15:52
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
windows 的API中。 就有枚举CPU核数等接口。 运行时判断就行了。

这个可以考虑windows internals 里面对于同样的内核镜像,在2008  vista等各系统中,如何不同运行的。
2013-8-27 09:01
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
估计是我水平低,理解不了。感觉你说了跟没说一样。

我需要听的是原理,并不是什么函数,反正你两个都没说。前一个问题我大致知道。但后一个问题却是真的不知道怎不么实现。//我刚刚补充了问题。
2013-8-27 09:59
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
CPU时间分配 核心分配
如某些8核软件
是用过将8个子进程限制在不同CPU.达到互不卡死的目的
并且减少了上下文切换的开销

不过感觉只是理论上的..
2013-8-27 15:41
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你说得太虚了。没法指导人编程。
2013-8-28 09:29
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很多商业软件是按照CPU核数、服务数买的,这是怎么做到的?
买还要怎么做得到,这个标题买是不是写错了。我水平低表示理解不好
2013-8-28 09:48
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
哥们儿,我那个“买”字写错了,因为是标题没法编辑,应该是“卖”。不过反过来对买家而言不就是买吗!一样的。你要是明白了何必扣字眼呢!?
2013-8-28 11:33
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
无语.微软有个API是限制进程在某核心运行的...不过应该不是这么简单
2013-8-28 18:05
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
1.你的程序需要建立提可以在多线程上运行的架构,这个架构可以将整个系统的负载平均分配到每个线程上;
2.你的程序在启动之前检查CPU的数量,最直接的方法是读取CPU的型号,通过型号来判断种类,不用API是因为API的结果不能区分是多CPU还是多Core,这两个是不一样的东西;
3.之后可以根据购买的序列号来判断是什么版本,然后就知道可以启动几个线程来运行了;
4.启动线程后,把每个线程绑定到不同的CPU或者内核上就可以了。

以上应该是最简单的思路了。。。
2013-8-28 18:40
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
明白你的意思了,ok!!

有没有必要直接将代码塞到指定的CPU寄存器上呢?(这个当然要汇编了),这个当然要针对每个核,要塞的话,一个也跑不了了。这样做必要吗?为什么!?
2013-8-28 19:51
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
把线程分配到每个独立的CPU上,可以让程序尽可能多的占用系统的时间片,但是平分到CPU上却可以节省线程之间切换时间。至少我是这么认为的。。。
2013-8-28 21:05
0
雪    币: 81
活跃值: (110)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
api是让用户也能使用的系统级代码
2013-8-28 21:17
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
问题是,我想尽量用普通C实现,少用平台相关代码。
2013-8-29 10:49
0
游客
登录 | 注册 方可回帖
返回
//