为您找到与多核cpu负载不均衡相关的共200个结果:
CPU作为电脑的核心组成部份,它的好坏直接影响到电脑的性能。下面是读文网小编带来的关于Linux 多核CPU的知识的内容,欢迎阅读!
Linux 操作系统的诞生创始人林纳斯·托瓦兹、发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU计划、POSIX 标准和Internet 网络。1981 年IBM公司推出微型计算机IBM PC。1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。
1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上,而且已经爱不释手、不能离开这个shell 软件了。1991年7月3日,第一个与Linux有关的消息是在comp.os.minix上发布的(当然此时还不存在Linux这个名称,当时林纳斯·托瓦兹的脑子里想的可能是FREAX,FREAX的英文含义是怪诞的、怪物、异想天开等)。
1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的诞生(Freeminix-likekernel sources for 386-AT)。1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。
浏览量:2
下载量:0
时间:
CPU作为电脑的核心组成部份,它的好坏直接影响到电脑的性能。下面是读文网小编带来的关于linux在多核处理器上的负载均衡原理的内容,欢迎阅读!
现在互联网公司使用的都是多CPU(多核)的服务器了,Linux操作系统会自动把任务分配到不同的处理器上,并尽可能的保持负载均衡。那Linux内核是怎么做到让各个CPU的压力均匀的呢?
做一个负载均衡机制,重点在于:
1. 何时检查并调整负载情况?
2. 如何调整负载?
先看第一个问题。
如果让我这样的庸俗程序员来设计,我第一个想到的就是每隔一段时间检查一次负载是否均衡,不均则调整之,这肯定不是最高效的办法,但肯定是实现上最简单的。实际上,2.6.20版linux kernel的确使用软中断来定时调整多CPU上的压力(调用函数run_rebalance_domains),每秒1次。
但每秒一次还是不能满足要求,对很多应用来说,1秒太长了,一秒钟内如果发生负载失衡对很多web应用都是不能接受的,何况其他实时应用。最好kernel能够紧跟进程的变化来调整。
那么,好,我们在进程创建和进程exit的时候检查并调整负载呢?可以,但是不完整,一个进程创建以后如果频繁的睡眠、醒来、睡眠、醒来,它这样折腾对CPU的负载是有影响的,你就不管它了吗?说到底,我们其实关注的是进程是否在使用CPU,而不是它是否诞生了。所以,我们应该在进程睡眠和醒来这两个时间点检查CPU们的负载。
再看第二个问题,怎么调整负载呢?从最繁忙的那个CPU上挪一个进程到最闲的那个CPU上,如果负载还不均衡,就再挪一个进程,如果还不均衡,继续挪....这也是个最笨的方法,但它却真的是linux CPU负载均衡的核心,不过实际的算法在此基础上有很多细化。对于Intel的CPU,压缩在同一个chip上的多核是共享同一个L2的(如下图,里面的一个Processor其实就是一个chip),如果任务能尽可能的分配在同一个chip上,L2 cache就可以继续使用,这对运行速度是有帮助的。所以除非“很不均衡”,否则尽量不要把一个chip上的任务挪到其他chip上。
于是,为了应对这种CPU core之间的异质性——在不同的core之间迁移任务,代价不同——Linux kernel引入了sched_domain和sched_group的概念。sched_domain和sched_group的具体原理,可参考刘勃的文章和英文资料。
【代码剖析】
SMP负载均衡检查或调整在两个内核函数里发生:
1. schedule()。当进程调用了sleep、usleep、poll、epoll、pause时,也就是调用了可能睡去的操作时都会转为内核代码里对schedule()函数的调用。
2. try_to_wake_up() 。说白了就是进程刚才睡了,现在要醒来,那醒来以后跑在哪个CPU上呢?这个选择CPU的过程,也就是负载均衡的过程。
我们先看schedule()的代码,我们忽略函数前面那些和负载均衡无关的代码(本文代码以内核2.6.20版为准):
[kernel/sched.c --> schedule() ]
3489 cpu = smp_processor_id();
3490 if (unlikely(!rq->nr_running)) {
3491 idle_balance(cpu, rq);
3492 if (!rq->nr_running) {
3493 next = rq->idle;
3494 rq->expired_timestamp = 0;
3495 wake_sleeping_dependent(cpu);
3496 goto switch_tasks;
3497 }
3498 }
每个CPU都有一个运行队列即这里的 rq,运行队列里放着该CPU要运行的进程,如果运行队列里没有进程了,就说明当前CPU没有可调度的任务了,那就要调用idle_balance从其它CPU上“平衡”一些(就是挪一些)进程到当前rq里。
再看 idle_balance()的实现:
[kernel/sched.c --> idle_balance()]
2806 /*
2807 * idle_balance is called by schedule() if this_cpu is about to become
2808 * idle. Attempts to pull tasks from other CPUs.
2809 */
2810 static void idle_balance(int this_cpu, struct rq *this_rq)
2811 {
2812 struct sched_domain *sd;
2813 int pulled_task = 0;
2814 unsigned long next_balance = jiffies + 60 * HZ;
2815
2816 for_each_domain(this_cpu, sd) {
2817 unsigned long interval;
2818
2819 if (!(sd->flags & SD_LOAD_BALANCE))
2820 continue;
2821
2822 if (sd->flags & SD_BALANCE_NEWIDLE)
2823 /* If we've pulled tasks over stop searching: */
2824 pulled_task = load_balance_newidle(this_cpu,
2825 this_rq, sd);
2826
2827 interval = msecs_to_jiffies(sd->balance_interval);
2828 if (time_after(next_balance, sd->last_balance + interval))
2829 next_balance = sd->last_balance + interval;
2830 if (pulled_task)
2831 break;
2832 }
2833 if (!pulled_task)
2834 /*
2835 * We are going idle. next_balance may be set based on
2836 * a busy processor. So reset next_balance.
2837 */
2838 this_rq->next_balance = next_balance;
2839 }
从子 sched_domain到父sched_domain遍历该CPU对应的domain(2816行),并调用load_balance_newidle,我们继续:
[kernel/sched.c --> load_balance_newidle()]
2730 static int
2731 load_balance_newidle(int this_cpu, struct rq *this_rq, struct sched_domain *sd)
2732 {
2733 struct sched_group *group;
2734 struct rq *busiest = NULL;
2735 unsigned long imbalance;
2736 int nr_moved = 0;
2737 int sd_idle = 0;
2738 cpumask_t cpus = CPU_MASK_ALL;
2739
2740 /*
2741 * When power savings policy is enabled for the parent domain, idle
2742 * sibling can pick up load irrespective of busy siblings. In this case,
2743 * let the state of idle sibling percolate up as IDLE, instead of
2744 * portraying it as NOT_IDLE.
2745 */
2746 if (sd->flags & SD_SHARE_CPUPOWER &&
2747 !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE))
2748 sd_idle = 1;
2749
2750 schedstat_inc(sd, lb_cnt[NEWLY_IDLE]);
2751 redo:
2752 group = find_busiest_group(sd, this_cpu, &imbalance, NEWLY_IDLE,
2753 &sd_idle, &cpus, NULL);
2754 if (!group) {
2755 schedstat_inc(sd, lb_nobusyg[NEWLY_IDLE]);
2756 goto out_balanced;
2757 }
2758
2759 busiest = find_busiest_queue(group, NEWLY_IDLE, imbalance,
2760 &cpus);
2761 if (!busiest) {
2762 schedstat_inc(sd, lb_nobusyq[NEWLY_IDLE]);
2763 goto out_balanced;
2764 }
2765
2766 BUG_ON(busiest == this_rq);
2767
2768 schedstat_add(sd, lb_imbalance[NEWLY_IDLE], imbalance);
2769
2770 nr_moved = 0;
2771 if (busiest->nr_running > 1) {
2772 /* Attempt to move tasks */
2773 double_lock_balance(this_rq, busiest);
2774 nr_moved = move_tasks(this_rq, this_cpu, busiest,
2775 minus_1_or_zero(busiest->nr_running),
2776 imbalance, sd, NEWLY_IDLE, NULL);
原来就是我们上面说的“笨办法”,针对当前CPU所属的每个domain(从子到父),找到该 sched_domain里最忙的sched_group(2752行),再从该group里找出最忙的运行队列(2759行),最后从该“最忙”运行队列里挑出几个进程到当前CPU的运行队列里。move_tasks函数到底挪多少进程到当前CPU是由第4和第5个参数决定的,第4个参数是指最多挪多少个进程,第5个参数是指最多挪多少“压力”。有了这两个参数限制,就不会挪过头了(即把太多进程挪到当前CPU,造成新的不均衡)。
举个例子,假如有一台8核的机器,两个CPU插槽,也就是两个chip,每个chip上4个核,再假设现在core 4最忙,core 0第二忙,如图:
按照 刘勃的文章里的提法,首先是core domain,即Processor 0属于domain 1,Processor 1属于domain 2,其中domain 1包含4个sched_group,每个group对应一个core,如下图(group未画出):
假如现在是 Core 3 在执行idle_balance,则先在domain 1里找最忙的group,找到第二忙的group是core 0(core 4不在domain 1里,所以不会找到它),再从core 0里找最忙的runqueue(运行队列),core 0就一个运行队列,所以直接就是它对应的runqueue了,然后从该runqueue里挪出几个任务到Core 3,这一层domain的均衡做完了。
接着是domain 1的父domain,即 cpu_domain,下图的domain 0:
这个domain 0包含了两个group,每个group对应一个chip,即每个group对应了4个core。
在domain 0找最繁忙的group,显然会找到Processor1 对应的group(因为core 4超忙),那么继续在Processor 1里找最忙的runqueue,于是找到core 4,最后从core 4的runqueue里挑出几个任务挪到core 3,。
这样,整个系统8个核都基本平衡了。
也许有人要问,为什么是从子domain到父domain这样遍历,而不是倒过来,从父到子遍历呢?这是因为子domain通常都是在一个chip上,任务的很多数据在共享的L2 cache上,为了不让其失效,有必要尽量让任务保持在一个chip上。
也许还有人要问:如果core 3本来就是最忙的core,它如果运行idle_balance,会发生什么?答案是什么也不会发生。因为在find_busiest_group函数里,如果发现最忙的是“本CPU”,那么就直接返回NULL,也就不再做任何事。
那core 3岂不永远是最忙的了?呵呵,大家忘了,系统里总有闲的CPU(哪怕是相对比较闲),它总会执行schedule(),就算它从不调用sleep从不睡眠,时钟中断也会迫使其进程切换,进而调用schedule,进而将繁忙CPU的任务揽一部分到自己身上。这样,谁最闲,谁早晚会从忙人身上揽活儿过来,所以忙人不会永远最忙,闲人也不会永远最闲,所以就平等,就均衡了。
再看try_to_wake_up():
[kernel/sched.c --> try_to_wake_up()]
1398 static int try_to_wake_up(struct task_struct *p, unsigned int state, int sync)
1399 {
......
1417
1418 cpu = task_cpu(p);
1419 this_cpu = smp_processor_id();
1420
1421 #ifdef CONFIG_SMP
1422 if (unlikely(task_running(rq, p)))
1423 goto out_activate;
1424
1425 new_cpu = cpu;
1426
1427 schedstat_inc(rq, ttwu_cnt);
1428 if (cpu == this_cpu) {
1429 schedstat_inc(rq, ttwu_local);
1430 goto out_set_cpu;
1431 }
变量this_cpu和变量cpu有什么区别?变量this_cpu是实际运行这个函数的处理器(“目标处理器”),而变量cpu是进程p在睡眠之前运行的处理器??为了方便我们暂且称之为“源处理器”。当然,这两个处理器也可能是同一个,比如进程p在处理器A上运行,然后睡眠,而运行try_to_wake_up的也是处理器A,其实这样就最好了,进程p在处理器A里cache的数据都不用动,直接让A运行p就行了??这就是1428行的逻辑。
如果this_cpu和cpu不是同一个处理器,那么代码继续:
1447 if (this_sd) {
1448 int idx = this_sd->wake_idx;
1449 unsigned int imbalance;
1450
1451 imbalance = 100 + (this_sd->imbalance_pct - 100) / 2;
1452
1453 load = source_load(cpu, idx);
1454 this_load = target_load(this_cpu, idx);
1455
1456 new_cpu = this_cpu; /* Wake to this CPU if we can */
1457
1458 if (this_sd->flags & SD_WAKE_AFFINE) {
1459 unsigned long tl = this_load;
1460 unsigned long tl_per_task;
1461
1462 tl_per_task = cpu_avg_load_per_task(this_cpu);
1463
1464 /*
1465 * If sync wakeup then subtract the (maximum possible)
1466 * effect of the currently running task from the load
1467 * of the current CPU:
1468 */
1469 if (sync)
1470 tl -= current->load_weight;
1471
1472 if ((tl <= load &&
1473 tl + target_load(cpu, idx) <= tl_per_task) ||
1474 100*(tl + p->load_weight) <= imbalance*load) {
1475 /*
1476 * This domain has SD_WAKE_AFFINE and
1477 * p is cache cold in this domain, and
1478 * there is no bad imbalance.
1479 */
1480 schedstat_inc(this_sd, ttwu_move_affine);
1481 goto out_set_cpu;
1482 }
1483 }
计算出“目标处理器”和“源处理器”各自的负载( 1453行和1454行),再计算“目标处理器”上的每任务平均负载 tl_per_task,最后进行判断:如果“目标处理器”的负载小于“源处理器”的负载且两处理器负载相加都比 tl_per_task小的话,唤醒的进程转为“目标处理器”执行。还有一种情况就是1474行的判断,如果“目标处理器”的负载加上被唤醒的进程的负载后,还比“源处理器”的负载(乘以imbalance后)的小的话,也要把唤醒的进程转为“目标处理器”执行。如果两个因素都不满足,那还是由p进程原来呆的那个CPU(即”源处理器“)继续来处理吧。
有点儿绕,是吧?其实代码虽绕,用意是简单的:
1472行-1473行其实是这样一个用意:如果“目标处理器”的负载很小,小得即使把压力全给到“源处理器”上去也不会超过“源处理器”上的平均任务负载,那么这“目标处理器”的负载是真的很小,值得把p进程挪过来。
1474行的用意则是:如果我们真的把p进程挪到“目标处理器”以后,“目标处理器”的压力也不比“源处理器”大多少,所以,还是值得一挪。
说来说去,还是那个笨原则:把任务从最忙的CPU那儿转到很闲的CPU这儿。
我们已经看过了睡眠和醒来时的内核函数,那么软中断里的 run_rebalance_domains又干了些什么呢?其实也很简单,它调用了load_balance函数,而这个函数和load_balance_newidle实现上基本一样,就不累述了。
浏览量:2
下载量:0
时间:
CPU作为电脑的核心组成部份,它的好坏直接影响到电脑的性能。下面是读文网小编带来的关于Linux系统下,CPU信息详解(cpuinfo,多核,多线程)的内容,欢迎阅读!
在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢?
经过查看,我的开发机器是2个物理CPU,16核32线程,Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
系统的架构是X86的64位系统
CPUs 有32个逻辑的处理器
Threads per core: 每个核有两个线程
Core per Socket:每个物理卡槽有8个核心
CPU Socket :有2个物理卡槽
NUMA nodes : Non Uniform Memory Access Architecture,使众多服务器像单一系统那样运转,两个NUMA
记录一下,判断的过程和知识。
判断依据:
1.具有相同core id的cpu是同一个core的超线程。
2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。
英文版:
1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.
2.Any cpu with the same physical id are threads or cores in the same physical socket.
echo "logical CPU number:"
#逻辑CPU个数
cat /proc/cpuinfo | grep "processor" | wc -l
echo "physical CPU number:"
#物理CPU个数:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
echo "core number in a physical CPU:"
#每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
#查看每个physical cpu上core id的数量,即为每个物理CPU上的core的个数
cat /proc/cpuinfo | grep "core id"
#是否为超线程?
#如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
#每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
cat /proc/cpuinfo | grep "siblings"
/proc/cpuinfo 文件包含系统上每个处理器的数据段落。/proc/cpuinfo 描述中有 6 个条目适用于多内核和超线程(HT)技术检查:processor, vendor id, physical id, siblings, core id 和 cpu cores。
processor 条目包括这一逻辑处理器的唯一标识符。
physical id 条目包括每个物理封装的唯一标识符。
core id 条目保存每个内核的唯一标识符。
siblings 条目列出了位于相同物理封装中的逻辑处理器的数量。
cpu cores 条目包含位于相同物理封装中的内核数量。
如果处理器为英特尔处理器,则 vendor id 条目中的字符串是 GenuineIntel。
1.拥有相同 physical id 的所有逻辑处理器共享同一个物理插座。每个 physical id 代表一个唯一的物理封装。
2.Siblings 表示位于这一物理封装上的逻辑处理器的数量。它们可能支持也可能不支持超线程(HT)技术。
3.每个 core id 均代表一个唯一的处理器内核。所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。
4.如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
5.如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。cpu cores 条目也可以表示是否支持多内核。
判断CPU是否64位,检查cpuinfo中的flags区段,看是否有lm标识。
Are the processors 64-bit?
A 64-bit processor will have lm ("long mode") in the flags section of cpuinfo. A 32-bit processor will not
浏览量:2
下载量:0
时间:
CPU是电脑的重要组成部分,是不可缺少的角色。下面是读文网小编带来的关于win7 多核cpu补丁的内容,欢迎阅读!
在xp系统时代,需对系统进行多核补丁安装以便提高系统性能,那么在win7系统环境怎么提高多核CPU速度呢?
1、点击开始按钮,在开始菜单的搜索程序和文件输入框中输入Msconfig后回车,打开系统配置对话框。
2、切换到引导选项标签,点击高级项按钮,弹出引导高级选项对话框。
3、在对话框中勾选处理器数,在下拉菜单里选择处理器的数目,比如双核就选择2,并勾选最大内存选项,然后点击确定返回,重启电脑即可。
浏览量:2
下载量:0
时间:
CPU是电脑的重要组成部分,是不可缺少的角色。下面是读文网小编带来的关于win7 64位旗舰版开启多核CPU启动系统加快电脑运行的内容,欢迎阅读!
win7 64位旗舰版开启多核CPU启动系统加快电脑运行:电脑运行速度是每个用户都非常关心的事情,因此为电脑提速的方法也有非常之多,现在的电脑一般也成为双核的了,那么我们可以通过开启多核处理器多核CPU启动系统让电脑运行速度更快,下面跟小编一起来看看具体的操作方法!
具体方法:
1、键盘同时按下“Win”键+“R”键打开运行,输入msconfig,按下回车键,即可打开系统配置窗口;
2、 选中“引导”选项卡中,我们点击“高级选项”;
3、再“处理器数”和“最大内存”,我们都把他们调整为电脑的最大值,点“确定”退出;
win7 64位旗舰版开启多核CPU启动系统加快电脑运行的方法就跟大家分享到这里了,大家赶紧学起来,让我们的电脑运行更加顺畅吧!
浏览量:3
下载量:0
时间:
中央处理器(CentralProcessingUnit)的缩写,即CPU,CPU是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。下面是读文网小编带来的关于如何禁用Win8系统的CPU多核处理器的内容,欢迎阅读!
电脑的配置方面,CPU是比较收关注的一方面。现在很多的CPU都是多核处理器,运用多核处理器可以同时运算更多的程序值,同时运行的速度也会快上不少,但是多核处理器耗能大,如果不需要运算太复杂的东西,我们完全可以关掉多核心CPU。下面,我们就一起来看看Win8系统多核CPU禁用的方法。
相关推荐:U盘安装Win8系统图解
⑴ 首先我们进入到Win8系统的传统桌面位置,然后利用快捷键Win+R进入“运行”功能;
⑵ 在运行的对话框中手动输入mscon并按回车键执行,进入系统配置界面;
⑶ 切换到系统配置的引导栏目,然后点击下方的高级选项;
⑷ 在弹出的新窗口中,我们先勾选处理器数量,然后选择为1,最后确定退出即可。
通过上述设置,我们就可以禁用掉其余的CPU核心,达到节能的效果。
浏览量:2
下载量:0
时间:
CPU是手机的重要组成部分,是不可缺少的角色。下面是读文网小编带来的关于安卓4.2系统是否能有效支持多核CPU的内容,欢迎阅读!
卓4.2可以支持多核CPU
android 4.2系统十大特性:
1、完整的Chrome浏览器
Android 4.2的Web浏览器的变化将非常受欢迎,支持选项卡浏览系统以及书签同步。这样的设计为了使手机和平板电脑的使用和传统PC使用无异。
2、全新的手机风景模式
作为Android 4.2,将集合手机以及平板电脑一体,在使用手机时,可以使用类似于平板电脑尺寸的风景模式,并且可以进行反转。
3、全新的文件管理器
Android 4.2将集合一个全新的文件管理器,使用户可以方便的管理SD卡上的文件,而不再依赖于第三方软件。
4、文本输入选项的改进
Android 4.2重新设计了键盘的布局,甚至将无用的数字和符号都一并略去了。
5、一个明确的升级方法
Google似乎已经对升级操作系统后产生的各种混乱场景感到非常厌倦,因此在5月份发布的升级,Google必须保证硬件方面足够指标才能升级操作系统。希望这次Android 4.2新版的系统中,对于硬件方面的要求不再是个问题,这将使得所有用户可以使用新的Android版本。
6、Android Key Lime Pie精简版
这个版本有点像Windows XP的上网本,拥有大部分功能,但是对于硬件要求稍低。
7、具有开关切换的用户界面
众多Android生产厂商都会自定义Android,帮助手机更好的服务使用者。但与此同时,如果能停用某些用户界面,而恢复到标准的Android将是一个不错的功能。
8、全新的电源管理系统
全新的电源管理系统将有效的分配电池的合理使用,例如牺牲浏览下滑页面的速度而因此获得20分钟发短信息的时间。
9、更为轻便的主题模式
Android 4.2是漂亮的,不只是黑色背景上的白色文字。当然,我们可以使用不同的图片作为背景。
10、全新的锁屏页面
当进入锁屏页面时,Google已经试图放入一些有关来电和消息的信息。虽然这样做未免会有一些安全风险,但Android应该能人为的控制开关这个功能。
浏览量:2
下载量:0
时间:
CPU是电脑的重要组成部分,是不可缺少的角色。下面是读文网小编带来的关于如何修改Windows7用多核CPU启动系统的内容,欢迎阅读!
多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。
即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。
浏览量:2
下载量:0
时间:
仙剑奇侠传6多核CPU配置优化方法_仙剑6提高帧数修改方法推荐。下面是读文网小编带来的关于仙剑奇侠传6多核CPU配置优化方法的内容,欢迎阅读!
《仙剑奇侠传六》是由大宇资讯旗下软星科技(北京)有限公司制作一款单机角色扮演电脑游戏,已于2015年7月8日上市。本作是《仙剑奇侠传》系列游戏的第八部单机作品,同时也是仙剑二十周年之作,讲述了越今朝和越祈在为寻找丢失的某样东西时,无意中揭开了尘封的秘密的故事。
世界观:传说,在太古神农大神诞生时,天下伴有九泉相生。这九座神泉又称神农为天地九井,乃是滋生万物的源泉。九泉中凝聚了世上最浓厚的灵力,为天地灵脉之枢纽。九泉伴神农而生,后又经神农千万年辛劳疏通,逐渐成为天地间最重要的生命源泉。九泉面前,众生平等。无论是神骏奇丽的灵兽仙禽,还是丑陋不堪的凶兽毒虫,都在其滋养下共享这方天地。
浏览量:2
下载量:0
时间:
多核时代是否真的已经来临了呢,双核已经被抛弃了吗,下面是读文网小编带来的关于双核仍是攒机首选,三大理由不买多核CPU的内容,欢迎阅读!
随着价格战的日益白热化,一向以性价比著称的AMD旗下已经出现了7xx元的三核处理器,这是不少中端玩家都能接受的心理价格了。那么,多核时代是否真的已经来临了呢?
当今PC的发展速度几乎让人感到喘不过气来,就在双核刚刚开始普及的时候,四核处理器就马上披挂上马。在不到1年的时间里,四核处理器已经逼至千元大关。而AMD在今年4月推出的三核更是让多核处理器普及的好戏加速上演。这种局面导致不少消费者在选择处理器时在双核和多核之间徘徊,特别是打算购买千元级别处理器的用户,他们面对的是双/三/四核同场竞技的局
从硬件规格上来看,多核处理器拥有更多的线程,官方宣称在多任务多线程的应用中多核拥有更好的表现。而多核处理器亦的确是未来发展的趋势,它会像双核替代单核般称霸市场。但笔者认为多核时代远远没有到来,至少2008年还是双核的天下,在这里就由笔者告诉你不买多核的三大理由。
多核还不成熟
在双核尚未普及之时,Intel为了给予AMD压力推出了基于酷睿2架构的四核处理器。但让人大跌眼镜的是,Intel推出的Kentsfield核心的四核处理器Core 2 Extreme QX6700居然使用了与奔腾D一样的做法。Intel把两片双核Die封装在一块基板上。也就是说,Kentsfield里面所包含的2组共4个核心只是两两互通,两组核心的L2 Cache是独立的,数据需要绕道FSB来传输。当然,酷睿2架构的高效运算能力在一定程度上弥补了这一缺陷,Intel四核的性能依然相当不错。
AMD方面由于坚持原生多核技术的开发,但终于在07年末推出了原生设计K10架构,并向桌面市场推出了Phenom x4四核处理器。然而过于复杂的设计让K10架构出现了单个核心运算效率偏低的情况,而更严重的是65nm工艺难以满足K10架构的需求,AMD多核处理器在频率提高到一定程度后发热和功耗将难以控制。当然,采用原生技术的AMD多核处理器在多任务多线程的应用中表现相当不错。
K10架构需要等待45nm工艺的支持
目前两家巨头都在加紧开发更完善的多核处理器架构,Intel即将在08至09年之间发布全新的Nehalem架构,届时Intel会全面推出基于新架构的多核处理器。而AMD亦会在同一时刻推出基于45nm工艺的K10.5架构。
相反的是,目前的双核处理器已经非常成熟,消费者不需要担心使用双核处理器会带来什么问题。
核功耗发热更低
双核处理器在刚刚面世时就因为过高的功耗和发热遭到了人们的质疑,但同样遇上这个问题的多核处理器由于硬件规格的原因,在功耗和发热的控制上一直没有得到有效的解决。
AMD破例为黑盒9850四核处理器提供了高级散热器
目前多核处理器最低的TDP(热功耗设计)为95W,AMD此前推出65W TDP Phenom x4 9100e由于没有正式上市而不列入讨论范围。实际上,随着频率的提升,多核处理器的TDP亦随之飞升。例如AMD Phenom x4 9850BE四核处理器的TDP就达到了140W,而频率低100MHz的Phenom x4 9750 TDP仅125W。而Intel方面即使是采用了45nm工艺,依然没法改变目前四核处理器功耗过高的局面。
多核处理器暂时不能达到的功耗水平
如此高的TDP带来了可观的发热,不少已购买多核处理器的玩家都有更换散热器的打算。反观双核处理器,不少玩家还在为使用原装散热器进行超频而津津乐道。目前频率达到3.0GHz的Intel Core 2 Duo E8400 TDP仍然没有超过45W,AMD更是再次推出了性能更好的45W TDP双核处理器。有绿色环保意念,无法忍受噪音带困扰的消费者更应该选择双核。
双核性能足矣
多核处理器还需要面对目前缺乏软件支持的问题,由于双核处理器已经全面普及,各方的软件开发都基于双线程运算(一些专业软件在很早之前就支持多线程运算)。因此在日常应用中,双核处理器可以完美发挥全部的性能。但多核处理器则有可能出现运算效率低下,在某些应用上反而不及双核的情况。
即使是面对大型游戏这些怪兽级应用,高频双核即可发挥出高端显卡的应有威力,多核处理器在一些游戏中的表现反倒不及双核处理器,这也是由于游戏引擎没有对多核处理器进行优化的原因。
显然,更大软件厂商不可能为少部分多核处理器用户专门开发针对性产品,因此多核处理器在软件应用上的完美支持还有待时日。
综上所述,笔者还是建议消费者不需要过分强求购买多核处理器,因为双核处理器无论在功耗、发热,还是在软件支持上都有着更好的表现。
浏览量:2
下载量:0
时间:
多核心cpu主要分原生多核和封装多核。原生多核指的是真正意义上的多核,最早由AMD提出,每个核心之间都是完全独立的,下面是读文网小编带来的关于多核cpu的概念的内容,欢迎阅读!
多核心cpu主要分原生多核和封装多核。原生多核指的是真正意义上的多核,最早由AMD提出,每个核心之间都是完全独立的,都拥有自己的前端总线,不会造成冲突,即使在高负载状况下,每个核心都能保证自己的性能不受太大的影响,通俗的说,原生多核的抗压能力强,但是需要先进的工艺,每扩展一个核心都需要很多的研发时间。
封装多核是只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起,和原生的比起来还是差了很多,而且后者成本比较高,优点在于多核心的发展要比原生快的多。
原生多核最原生多核指的是真正意义上的多核,早由AMD提出,每个核心之间都是完全独立的,都拥有自己的前端总线,不会造成冲突,即使在高负载状况下,每个核心都能保证自己的性能不受太大的影响,通俗的说,原生多核的抗压能力强,但是需要先进的工艺,每扩展一个核心都需要很多的研发时间。
封装多核封装多核是只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起,但两核心只能共同拥有一条前端总线,在两个核心满载时,两个核心会争抢前端总线,导致性能大幅度下降,所以早期的PD被扣上了“高频低能”的帽子,要提高封装多核的性能,在多任务的高压下尽量减少性能损失,只能不断的扩大前端总线的总体大小,来弥补多核心争抢资源带来的性能损失,但这样做只能在一定程度上弥补性能的不足,和原生的比起来还是差了很多,而且后者成本比较高,优点在于多核心的发展要比原生快的多。
双核就是2个核心核心(Die)又称为内核,是CPU最重要的组成部分。CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算、接受/存储命令、处理数据都由核心执行。各种CPU核心都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元都会有科学的布局。
从双核技术本身来看,到底什么是双内核?毫无疑问双内核应该具备两个物理上的运算内核,而这两个内核的设计应用方式却大有文章可作。据现有的资料显示,AMD Opteron 处理器从一开始设计时就考虑到了添加第二个内核,两个CPU内核使用相同的系统请求接口SRI、HyperTransport技术和内存控制器,兼容90纳米单内核处理器所使用的940引脚接口。而英特尔的双核心却仅仅是使用两个完整的CPU封装在一起,连接到同一个前端总线上。可以说,AMD的解决方案是真正的“双核”,而英特尔的解决方案则是“双芯”。
可以设想,这样的两个核心必然会产生总线争抢,影响性能。不仅如此,还对于未来更多核心的集成埋下了隐患,因为会加剧处理器争用前端总线带宽,成为提升系统性能的瓶颈,而这是由架构决定的。因此可以说,AMD的技术架构为实现双核和多核奠定了坚实的基础。AMD直连架构(也就是通过超传输技术让CPU内核直接跟外部I/O相连,不通过前端总线)和集成内存控制器技术,使得每个内核都自己的高速缓存可资遣用,都有自己的专用车道直通I/O,没有资源争抢的问题,实现双核和多核更容易。而Intel是多个核心共享二级缓存、共同使用前端总线的,当内核增多,核心的处理能力增强时,像多个城市群利用一个快速路,车辆很多快速路上肯定要遇到堵车的问题。
浏览量:3
下载量:0
时间:
多核CPU已经逐步的占领市场,下面是读文网小编带来的关于多核cpu工作原理的内容,欢迎阅读!
双核处理器(Dual Core Processor)是指在一个处理器上集成两个运算核心,从而提高计算能力。“双核”的概念最早是由IBM、HP、Sun等支持RISC架构的高端服务器厂商提出的,不过由于RISC架构的服务器价格高、应用面窄,没有引起广泛的注意。
逐渐热起来的“双核”概念,主要是指基于X86开放架构的双核技术。在这方面,起领导地位的厂商主要有AMD和Intel两家。其中,两家的思路又有不同。在早期,AMD从一开始设计时就考虑到了对多核心的支持。所有组件都直接连接到CPU,消除系统架构方面的挑战和瓶颈。
两个处理器核心直接连接到同一个内核上,核心之间以芯片速度通信,进一步降低了处理器之间的延迟。而Intel采用多个核心共享前端总线的方式。专家认为,AMD的架构对于更容易实现双核以至多核,Intel的架构会遇到多个内核争用总线资源的瓶颈问题。
双芯比较AMD和Intel的双核技术在物理结构上也有很大不同之处。AMD将两个内核做在一个Die(晶元)上,通过直连架构连接起来,集成度更高。Intel则是将放在不同Die(晶元)上的两个内核封装在一起,因此有人将Intel的方案称为“双芯”,认为AMD的方案才是真正的“双核”。
从用户端的角度来看,AMD的方案能够使双核CPU的管脚、功耗等指标跟单核CPU保持一致,从单核升级到双核,不需要更换电源、芯片组、散热系统和主板,只需要刷新BIOS软件即可,这对于主板厂商、计算机厂商和最终用户的投资保护是非常有利的。客户可以利用其现有的90纳米基础设施,通过BIOS更改移植到基于双核心的系统。
浏览量:2
下载量:0
时间:
中央处理器(CentralProcessingUnit)的缩写,即CPU,CPU是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。下面是读文网小编带来的关于开网页cpu单核多核的内容,欢迎阅读!
CPU包括运算逻辑部件、寄存器部件和控制部件等。
逻辑部件英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。
寄存器寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。
控制部件英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。
中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。
浏览量:2
下载量:0
时间:
CPU作为手机的核心组成部份,它的好坏直接影响到手机的性能。下面是读文网小编带来的关于手机cpu负载是什么意思的内容,欢迎阅读!
骁龙处理器具备高速的处理能力,可提供令人惊叹的逼真画面以及超长续航时间。随着产品系列不断丰富,可带来目前最先进的移动体验。2013年1月,Qualcomm Technologies宣布为骁龙处理器引入全新命名方式和层级,包含骁龙800系列、骁龙600系列、骁龙400系列和骁龙200系列处理器。骁龙处理器是高度集成的移动优化系统级芯片(SoC),它结合了业内领先的3G/4G移动宽带技术与强大的多媒体功能、3D图形功能和GPS引擎,可为移动终端带来极高的处理速度、极低的功耗、逼真的多媒体和全面的连接性。
骁龙LTE调制解调器为当今最智能的设备提供快速、平稳、可靠的语音和数据性能。智能嵌入式骁龙LTE调制解调器自动连接最有效的网络,支持几乎始终在线的连接状态和丰富的用户体验。2015年2月,Qualcomm Technologies将其旗舰品牌骁龙扩展至调制解调器芯片组,并启用了全新的分级,分为骁龙X12 LTE调制解调器、骁龙X10 LTE调制解调器、骁龙X8 LTE调制解调器、骁龙X7 LTE调制解调器、骁龙X6 LTE调制解调器和骁龙X5 LTE调制解调器共六个层级,骁龙LTE调制解调器的层级数字越高,该调制解调器就越先进。[
骁龙处理器是高度集成的移动优化系统级芯片(SoC),结合了业内领先的3G/4G移动宽带技术与强大的多媒体功能、3D图形功能和GPS引擎。骁龙芯片组系列定位IT与通信融合,由于具备极高的处理速度、极低的功耗、逼真的多媒体和全面的连接性,推动了全新智能移动终端的涌现,因此可以使用户获得“永远在线、永远激活、永远连接”的最佳体验,从而为世界各地的消费者重新定义移动性。
Qualcomm骁龙处理器共包括四个层级——骁龙800系列、骁龙600系列、骁龙400系列和骁龙200系列处理器,该层级展示了Qualcomm Technologies处理器的广泛产品组合。骁龙处理器解决方案是目前业内兼容网络最多、速度最快的产品,深受OEM厂商和消费者的喜爱。Qualcomm骁龙处理器无论是在业内还是用户心中都有着较高的认可度,也有不少用户把是否搭载骁龙处理器作为购机的一项重要参考。
浏览量:3
下载量:0
时间:
CPU作为电脑的核心组成部份,它的好坏直接影响到电脑的性能。下面是读文网小编带来的关于台式机 cpu如何开启多核设置的内容,欢迎阅读!
CPU包括运算逻辑部件、寄存器部件和控制部件等。
逻辑部件英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。
寄存器寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。
控制部件英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。
中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。
浏览量:14
下载量:0
时间:
中央处理器(CentralProcessingUnit)的缩写,即CPU,CPU是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。下面是读文网小编带来的关于最多核心的cpu的内容,欢迎阅读!
处理器(CPU)最多能有几个核,双核、四核还是八核?一家硅谷小公司给出的最新答案是:100个。这家名为Tilera的公司本月推出的一款处理器产品震惊业界,其拥有100个内核。在芯片制造商纷纷通过增加内核数量来创造应用的今天,Tilera创下了世界记录——要知道,大部分基于X86架构的芯片厂商目前只能制造出4到6核的芯片,英特尔最先进的CPU拥有8个内核,而AMD推出的Magny Cours也只拥有12个内核。Tilera的成立时间仅有5年,其创始人之一是麻省理工学院(MIT)教授阿南特·阿加瓦尔。由于这项在云计算技术方面的独特技术,使得该公司可以在云计算时代与英特尔、AMD、IBM等巨头直面竞争,最近其为台湾地区广达公司开发的云计算系统就被戴尔公司大量采用。今年10月,Tilera获得了广达的1000万美元投资。
打破常规的理由在于,他们采用了一种不同于X86架构的思维。近日,Tilera公司全球总裁兼CEO欧明德(Omid Tahernia)在上海接受本报记者独家专访时表示,传统CPU是一维总线架构,当核的个数超过了8个或者16个的时候,会产生性能上巨大的瓶颈,而Tilera基于两维的网状架构,把重点放在了核与核之间的通讯,这样的方式在提供高性能应用的同时也能大大节约功耗。
Tilera称,这款100核的产品性能是英特尔相关CPU产品的4倍,耗能却仅有其三分之一。1000核也不稀奇《21世纪》:现在芯片服务商都在谈多核,Tilera却提出了“众多核”的概念,应该怎样理解这个概念?欧明德:现在市场对多核的需求越来越多,主要是因为单核处理能力不可能像以往那样不断地提升。
从上世纪90年代开始,整个产业遵循摩尔定律,即芯片上可容纳的晶体管数目每隔18个月便会增加一倍,性能也提升一倍。随着时间的推移,频率越来越快,运营指令不断提升,这让芯片设计越来越多碰到瓶颈,特别是功耗的瓶颈,因此对多核的需求就越来越高。“众多核”跟云计算相关。
因为云计算时代对数据运算能力要求非常高,比如网络安全的防入侵管理,还有音视频的传输转换,计算量都非常大。在芯片发展过程中需要解决的核心的问题是功耗。
“众多核”可以很好解决这个问题,必然是一个趋势。《21世纪》:你们的100核产品,对英特尔这类传统CPU是一种颠覆吗?欧明德:绝对是这样。从性能比上看,我们这款产品是英特尔相关芯片的12倍。很多人都不相信可以做到100个内核,这对编程思维是一个很大挑战,但是我们做到了,而且我还可以说,100核不是上限。由于打破了摩尔定律的限制,这个数量可以不断向上,我们预计核的数量平均每两年会翻一倍,以后听到上千个内核的CPU也不稀奇。21世纪》:
这种颠覆性会在多大程度上冲击产业生态,或者引发产业格局的大变动?欧明德:在芯片产业的价值链上,这种情况总在发生。当出现一种新技术或者新模式,更多的新面孔也跟着出现,市场就会开始洗牌。比如最近大家都看到的联发科,就是抓住了一个机会从而改变了产业。一开始就把市场对准中国《21世纪》:Tilera成立仅有五年,为何就能掌握如此先进的技术,这五年来你们主要做了哪些工作?欧明德:虽然公司成立仅有5年,但从技术方面看已经有很多积累了。
从1994年起,我们的CTO就在麻省理工大学开始二维网状架构的多核研究。2002年,他做出第一款真正16核的半导体产品。2004年,我们引入了包括华登国际等在内的四家著名风投,台积电也是我们的策略投资人,目前我们已经进行了三轮融资,到2007年就正式推出了商用产品。近两年,我们的重点是建立品牌和提高客户接受度,目前在全球已经有37种语言的发布,这方面互联网帮了很大的忙。《21世纪》:未来在服务器市场你们将与英特尔等大型企业展开正面竞争,作为一家小公司,你认为优势何在?
欧明德:英特尔是一家很成功的公司,我们不希望引起太多他们的关注。需要强调的是,我们的技术来自MIT,有着16年的研发积累,目前拥有50多项多核相关的世界专利。
另外,在硅谷,高校和产业有着很紧密的联系,从研究到产业转化,再到获得商业成功,有着很成熟的经验。这让我们更有信心成功。说到具体的竞争优势,作为小公司,我们在技术的先进性方面更有优势,而且更加灵活。首先,我们只专注细分领域的核心技术发展,不会进入到英特尔的传统PC市场去跟他们竞争。
第二点更为重要,因为很多人不喜欢垄断,这让Tilera有机会得以发展。《21世纪》:听说Tilera的产品可以应用于TD-SCDMA制式的基站,可以说你们一开始就把市场对准了中国,这个决策是基于怎样的判断?欧明德:在TD-SCDMA系统里,这么一个高性能的多核处理器主要是集中在基站。在核心网上,我们主要做很多安全方面的处理。
Tilera技术可以让基站更加小型化、软件化和统一化。目前我们25%-30%的利润来自中国。中国的OEM市场做得非常好,而且中国厂商有一个特点,就是在采纳新技术方面走在了世界前列。
这让我们相信中国的客户能够很好地接纳Tilera的新技术。未来5年,随着云计算的发展,我想来自中国的利润百分比将会达到40%-45%。《21世纪》:你认为对Tilera来说目前的最大挑战是什么?欧明德:最大的挑战是要持续保持创新,保持在这个领域的技术领先性。另外一点,因为这是对编程思维的一个挑战,我们需要让更多人相信确实可以存在100个内核这件事。
浏览量:3
下载量:0
时间:
电脑新安装的linux系统!那么想要查看下linux cpu是否负载!该怎么办呢?下面由读文网小编给你做出详细的linux查看cpu负载方法介绍!希望对你有帮助!
实时CPU使用率
类似任务管理器实时系统信息可以通过top命令查看。显示的信息四个参数分别是:用户的模式(user)、低优先级的用户模式(nice)、系统内核模式(system)以及系统空闲的处理器时间(idle)
查看CPU处理器使用率
对于CPU使用率一般都是通过CPU使用情况,查看/proc/stat cpu状态文件
平均CPU使用率
对于一般某时间段CPU的使用率来说,可以通过查看/pRoc/loadavg 文件信息
第三方监控软件查看
网上有很多网管,监控软件安装配置好之后。可以通过网页管理查看CPU等硬件情况和CPU使用率,负载等参数
注意事项
如果是查看系统负载的话是需要通过,CPU使用率,内存使用率,网络负载,硬盘容量等等来综合计算出来的。如果对于linux不是特别了解,或者想一次获取比较全面,可以通过编写脚本或者相关的监控工具。
看了“linux如何查看cpu负载 ”文章的还看了:
浏览量:2
下载量:0
时间: