cpu这样是不是中兴通讯彻底没救了了

出自中国分布式计算总站
2018年第九届“BOINC 五项赛”已结束,恭贺 Team China 获得五枚铜牌!
感谢各位的辛勤付出,期待明年再接再厉~
竟赛时间: 08:00 -
08:00(UTC+8)
本站致力于向中文世界推广公益性|项目,由一个百科系统和一个组成。
本站已有篇分布式计算相关条目,个页面。欢迎您!
获取本站最新动态,请关注我们的新浪微博、、、()
, 发布了Linux 平台计算程序
Collatz Sieve 的Linux 平台计算程序现已发布。其中包含32位和64位两个版本的CPU、ATI OpenCL 、Intel OpenCL 以及nVidia OpenCL 的计算程序。
: 不要使用397.31版本的Nvidia驱动
我们注意到最近Nvidia发布了新的显卡驱动,该版本的驱动造成了大面积的问题。397.31版本驱动看起来会导致显卡运行一段时间后无法被CUDA和OpenCL程序访问,并且只能通过重启解决。这一问题有可能会影响到所有BOINC平台上的项目,实际上,这个驱动有可能影响所有GPU程序,就算不是BOINC平台上的分布式计算程序也无法幸免。
目前已经放出了397.55的hotfix 驱动,看起来已经修复了此问题。我强烈建议各位,要不升级至397.55,要不就干脆将驱动滚回397.31之前的版本。
:日,PrimeGird 的Extended Sierpinski Problem 子项目发现了一个超大质数:
该数长度为三百四十四万七千六百七十位,在目前已知质数中排名第二十三。This find eliminates k= k's remain in the Extended Sierpinski Problem.
该数的发现者为来自美国的老铁Tom Greer (tng*),使用的计算机为Intel(R) Xeon(R) E5-2620 v3 CPU @ 2.40GHz with 16GB RAM, running Microsoft Windows 10 。这台计算机用了约3小时45分钟完成了验证。这位发现者是Sicituradastra. team 团队的成员。
: 新的模拟任务
刚刚上线了14个新的模拟任务。名称为“de_modfit_XX_bundle5_NoContraintsWithDisk_1 ”,其中XX为09-23中的一个数。每个任务都是用了不同的参数及星体文件,所以我这很有可能出现把文件搞混的问题。这些任务都已经测试好了,不过如果各位发现任何问题,请将任务名及具体症状发布至官方论坛。
这里面某些任务根据不同的运行环境,可能会需要额外的计算量,任务得分会根据实际运算量计算。
:创纪录的新的胡道尔质数(Woodall Prime)
日,22:13:39 UTC ,PrimeGird 的胡道尔质数搜索项目发现了这个超大胡道尔质数:
胡道尔数是形如:W(n)=n*2^n-1 的数。其中的质数则称作胡道尔质数。更多信息请参见百科词条。或官方科普页面(英文):The Prime Glossary ()
该数长度为五百一十二万两千五百一十五位,是目前发现的最大的胡道尔质数,在所有已发现的质数中排名第16.这是PrimeGird 第四次发现最大质数、第四次发现胡道尔数,且是自2007年12月以来首次发现胡道尔数。
该数的发现者为来自意大利的老铁Diego Bertolotti (ScOrPIoN) ,使用的硬件为 Intel(R) Core(TM) i7-2600 CPU at 3.40GHz with 8GB RAM ,运行Win 10 系统。该计算机花了4天6小时14分钟完成了对这个数的质数检验。Diego 是Boinc @ Italy 团队的成员。
更多信息请移步查看官方声明。
:近日美国彭博社发表了一篇题为《蛋白质工程有望成为科学的未来发展方向》的科学评论文章,介绍了Rosetta@home 项目背后的一些科学知识、蛋白质工程,以及 David Baker 。
:公测的参与者在我们的开发工作中扮演着至关重要的角色。
他们无私的计算为我们及时发现错误与隐患提供了很多帮助。在这里,我想对所有这些志愿者们说一声谢谢。我们为测试者们新做了一枚公测参与者专享奖牌,并且我们会将测试期间的分数独立出来进行统计。 再次感谢各位对项目的贡献。
:日,PrimeGird 的子项目“搜索广义费米质数”发现了这个数:
该质数长度为三百三十一万零四百七十八位,为目前已知的第二大广义费米质数,在已知质数排行榜中位列第22名。
该数的发现者是来自意大利的老铁Cesare Marini (Cesare Marini) ,使用硬件为NVIDIA GeForce GTX 1060 in an Intel(R) Core(TM) i7-6700 CPU at 3.40GHz with 32GB RAM ,在Windows 10 Professional Edition 上运行的计算程序。这台机器的GPU花了大约一个半小时的时间完成了检验该数的工作。
:服务器升级计划因主板上又一个CPU槽位坏了而放弃。我们将推迟此次升级,研究一下换主板到底值不值。
:即将发布新版计算程序 在接下来的几天里,我们将推出一款新的计算程序,
其研究目标为:新计算程序的探索目标是七次域,目前最好的上界是5e6,而这个程序将会将上界扩展到200e6,
也就是说,它会找出所有判别式小于200e6的七次域。
1、该研究预计持续5-6个月左右(也许会更长)
2、该程序与现有的decic 计算程序同时发放
3、该计算程序将只支持64位Windows 系统与64位Linux 平台。
:两则新闻
服务器的HTTPS协议
如各位所愿DENIS@Home 现在已经运作在HTTPS协议上。如果您在近几个小时中遇到了问题,原因应该就是协议的切换。可能有些细节出现了变动,不过整体运作起来应该是没有问题的。
之前的URL 仍然有效,不过已经重定向至HTTPS 版,所以您不必在BOINC中更改项目地址。
如果BOINC客户端要求您重新添加项目,不用鸟他。刚切换那时有一小段时间URL 是不一致的,不过现在已经没这个问题了。
如果您发现任何异常,请及时与我们取得联系。
服务器的问题
我们的服务器出了点问题,所以我们得对服务器进行回档处理。多亏了新的备份系统,我们只丢失了18小时的数据。这期间发在论坛里的帖子可能会丢失,且今天发放的任务会出点问题。我们希望一切尽快回到正轨上。
我们对造成的不便表示抱歉。
:向大家简单汇报一下目前100MB数据块的分析进度。
目前我们已经成功地处理完了16个数据集中的5个,而我们目前的速度是大约每周一个数据集。
结果数据库看起来状态也不错。我没发现太多验证错误(大约每30个结果中有1个出错),所以前景还是不错的。
顺便提一句,如果你在项目选项中勾选“运行测试程序吗?(Run test applications?)”,那么你将只收到100MB数据块的任务。
:DSFL项目(搜索利什曼病治疗药物)对筛选出的10个潜在分子进行了实验室测试,全军覆没。
研究人员将把目光转至其他化合物。
:又发现一个创纪录的广义卡伦质数(Generalized Cullen Prime)
3月11日,PrimeGrid 的子项目“卡伦/胡道尔质数搜索”找到了目前已知最大的广义卡伦质数:
广义卡伦数(Generalized Cullen numbers)是指形如n*b^n+1的数。其中的质数就称为广义卡伦质数。
该质数长为二百九十一万三千七百八十五位,为目前已知最大的卡伦质数,在已知质数排行榜中位列第27名。
该数的发现者是来自日本的老铁Hiroyuki Okazaki (zunewantan),使用硬件为 Intel(R) Xeon(R) E5-2670 CPU @ 2.60GHz with 4GB RAM, running Linux。这台计算机用了大约七小时十三分钟完成了对该质数的检验,Hiroyuki 是the Aggie The Pew 团队的成员。
:我们最近正全力以赴地解决当前研究上的问题。
虽然计算程序的改变(即便相同版本号的计算程序也有所改动)、每一代的任务包的改变、计算结果分析的改变都没有明显到让各位都察觉到,但我们确实在时时改进着项目。
在引入某项改进的时候,这项改进给任务生成程序带入了一个bug 。我们确信在3月12日已经将此bug修复。看起来从那以后再没有出现与任务生成相关的问题。不过,那些已经产生的错误任务包仍然存在,而且我们暂时还不知道如何干掉他们。请不要担心,这也不会浪费各位的处理时间,计算程序在开始计算这种错误包的时候会直接出现“ ERR_TOO_MANY_EXITS”错误信息。
好消息是我们已经开始起草一篇关于项目研究成果的文章了。
:Theory 子项目今日达成四万亿次事件模拟!
LHC@home 项目的Theory 子项目(原Test4Theory),今天达成了四万亿次事件模拟的里程碑。该项目启动于2011年,是首个BOINC 平台上采用虚拟机技术(基于CREN 的CernVM 系统)的项目。
我们在接下来的几天里会在LHC@home 项目官网与CERN 官网为各位提供更多关于此事的消息。
在此奉上一条,感谢所有为本次成就贡献了力量的志愿者们!
:发布了新发现的正交对角拉丁方阵
笑迎狗年到,喜事连珠炮:项目满七月,方阵又找到!
目前我们正在研究分析该图表(figures 19-27)的方法。同时,这些工作还能帮助我们实现“在项目网站上展示各人发现”的想法。
感谢大家的参与,祝各位算好!
:IMP(微生物免疫项目)进展
在您的帮助下,我们已经预测了超过50000个优先蛋白质的结构!在我们肠道中200万种独特的细菌蛋白质的宏大计划中,这似乎并不是很多,但请记住,迄今为止的实验工作只涵盖了大约125000种蛋白质。在短短的6个月内,我们将已知蛋白质结构的范围扩大了近28%,取得了巨大的进展!
您可能已经意识到,按照这个速度,预测所有的细菌蛋白质结构需要数年时间才能完成。幸运的是,我们不必预测每一个结构,因为蛋白质可以分为不同的家族。这些家族由具有相似结构和功能的蛋白质组成,只有每个家族有一名代表成员才能全面了解家族的功能。一旦我们确定了感兴趣的蛋白质家族,我们将更详细地研究它们。
与此同时,我们已经调整了我们的战略,即如何优先考虑预测。而不是只看细菌的基因组(一个细菌物种的基因),我们研究了细菌pangenomes(所有菌株的基因属于同一物种)。然后我们把这些pangenomes根据患病个体之间在队列研究IBD和T1D的微生物的作用。这种方法使我们能够在项目早期发挥最大的影响力。我们不仅详细介绍了T1D和IBD中涉及的微生物,还扩大了对微生物组的了解。
我们现在正在从您的预测中提取信息,并且在项目过程中,我们计划将数据提供给公众进行其他令人兴奋的研究。我们还在研究改进蛋白质功能预测的方法,使我们能够在迄今为止所做的数千次预测中找到涉及T1D和IBD的重要蛋白质家族。
由于您的慷慨捐助使所有这些进展都成为可能!关于微生物群还有很多需要发现的地方,但是在您支持的每一个计算中,我们正在更接近地了解每个人体内这个重要生态系统的细节,并了解IBD和T1D。 所以,谢谢,让我们继续共同努力,揭开微生物组的奥秘!
:发表了新的研究成果:《分子模拟驱动的新发现CXCL12抑制剂片段筛选》
高兴的向大家宣布一个好消息,我们对CXCL12趋化因子(chemokine)的研究成果已经正式 ,相应的奖牌也已经发放完毕。我们更新了我们网站上的“科学”,大家现在能够在这里看到自己对此次研究的贡献。
再次感谢各位算友为项目作出的贡献!
:针对 Widelife 子项目新的研究已启动。在上一批的结果中研究团队找到了有趣的发现,将于近期提交论文并向广大算友提供阅览。新一批任务包已经到位,如有问题请至官方论坛提问。
:FAH项目有了新的研究工具及团队成员。
项目正在寻找一种可靶向于HIV内、保护病毒RNA的蛋白质壳(称为衣壳核心)化合物。目前,尚无批准的药物靶向这种蛋白质壳。在此次更新中,Olson博士总结了团队迄今为止的进展情况,介绍了一种新的软件工具,以帮助他们开展工作,并向我们介绍一位新的研究团队成员。同时,项目先前大部分成果现在都已经收到,我们现在正在实验性地评估30种最有希望的化合物对抗前两个衣壳部位的过程。预计要花大约四个月时间,并重新启动虚拟筛选工作的第一阶段。
:清水计算结果启发了二次研究
一个国际研究团队受到清水计划项目结果启发,使用了略微不同的模型研究氧分子以及水分子的扩散效应。
本站服务器赞助商
Distributed Computing Information in Chinese |
Powered by MediaWiki (GuMax)摘要winXP系统空闲时explorer.exe进程CPU占用率50%左右用电脑管家全面查杀,全面体检没有任何问题,显示都正常。共有5个回复供您参考:回复1:您好,问题出现之前您有过什么操作吗?建议您下载急救箱查杀看一下:http://dlied6.qq.com/invc/xfspee…B…
win XP 系统
空闲时explorer.exe进程CPU占用率50%左右
用电脑管家全面查杀,全面体检没有任何问题,显示都正常。
共有5个回复供您参考:
您好,问题出现之前您有过什么操作吗?建议您下载急救箱查杀看一下: http://dlied6.qq.com/invc/xfspee ... BoxPro_.7z,稍后我用QQ回访您。
这个现象有半个月了,一直在寻找问题的根源。出现这问题是有一天电脑没关就出去嗨了四个小时,回家后再用电脑发现有点卡,就关机。第二天发现就有这现象了。怀疑是中蠕虫病毒了或被远控了,但是查杀不出来。不想重装系统只想了解真相。
所有的检查、查杀都是正常
全盘查杀无风险
急救箱没发现病毒木马
桌面进程的CPU使用率一直居高不下。空闲时间也达到了45%。测试开点2D游戏就很卡。正常办公感觉还算正常。
用户环境未发现病毒因素,非管家问题
<span class="tipso_style" id="tip-p" data-tipso='
您可以选择一种方式赞助本站
关于本站本站为360用户提供方便快捷的360产品问题解答信息,让我们理智客观的对待互联网信息。本站信息来源于互联网,如有侵权,请留言。苹果6s进入耳机方式了,去送修了说换排线也解决不了说是cpu烧掉了,我想问下这个是不是没救了
<p class="detail" data-data='苹果6s进入耳机方式了,去送修了说换排线也解决不了说是cpu烧掉了,我想问下这个是不是没救了'>苹果6s进入耳机方式了,去送修了说换排线也解决不了说是cpu烧掉了,我想问下这个是不是没救了[图片]
按时间排序
用棉签沾点洗手机的专门的水
插进耳机孔旋转
买个新的就好了
屁的烧掉了。CPU烧了还能开机?
少玩点游戏
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?
请输入私信内容:JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(如何选择见)。本文将注重介绍JVM、GC的一些重要参数的设置来提高系统的性能。
JVM内存组成及GC相关内容请见之前的文章: 。
JVM参数的含义 实例见
初始堆大小
物理内存的1/64(&1GB)
默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.
最大堆大小
物理内存的1/4(&1GB)
默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制
年轻代大小(1.4or lator)
注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。
整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.
增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
-XX:NewSize
设置年轻代大小(for 1.3/1.4)
-XX:MaxNewSize
年轻代最大值(for 1.3/1.4)
-XX:PermSize
设置持久代(perm gen)初始值
物理内存的1/64
-XX:MaxPermSize
设置持久代最大值
物理内存的1/4
每个线程的堆栈大小
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在左右
一般小的应用, 如果栈不是很深, 应该是128k够用的 大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。(校长)
和threadstacksize选项解释很类似,官方文档似乎没有解释,在论坛中有这样一句话:"”
-Xss is translated in a VM flag named ThreadStackSize”
一般设置这个值就可以了。
-XX:ThreadStackSize
Thread Stack Size
(0 means use default stack size) [Sparc: 512; Solaris x86: 320 (was 256 prior in 5.0 and earlier); Sparc 64 bit: 1024; Linux amd64: 1024 (was 0 in 5.0 and earlier); all others 0.]
-XX:NewRatio
年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
-XX:NewRatio=4表示年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。
-XX:SurvivorRatio
Eden区与Survivor区的大小比值
设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
-XX:LargePageSizeInBytes
内存页的大小不可设置过大, 会影响Perm的大小
-XX:+UseFastAccessorMethods
原始类型的快速优化
-XX:+DisableExplicitGC
关闭System.gc()
这个参数需要严格的测试
-XX:MaxTenuringThreshold
垃圾最大年龄
如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概率
该参数只有在串行GC时才有效.
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
锁机制的性能改善
-Xnoclassgc
禁用垃圾回收
-XX:SoftRefLRUPolicyMSPerMB
每兆堆空闲空间中SoftReference的存活时间
softly reachable objects will remain alive for some amount of time after the last time they were referenced. The default value is one second of lifetime per free megabyte in the heap
-XX:PretenureSizeThreshold
对象超过多大是直接在旧生代分配
单位字节 新生代采用Parallel Scavenge GC时无效
另一种直接在旧生代分配的情况是大的数组对象,且数组中无外部引用对象.
-XX:TLABWasteTargetPercent
TLAB占eden区的百分比
-XX:+CollectGen0First
FullGC时是否先YGC
并行收集器相关参数
-XX:+UseParallelGC
Full GC采用parallel MSC
(此项待验证)
选择垃圾收集器为并行收集器.此配置仅对年轻代有效.即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集.(此项待验证)
-XX:+UseParNewGC
设置年轻代为并行收集
可与CMS收集同时使用
JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值
-XX:ParallelGCThreads
并行收集器的线程数
此值最好配置与处理器数目相等 同样适用于CMS
-XX:+UseParallelOldGC
年老代垃圾收集方式为并行收集(Parallel Compacting)
这个是JAVA 6出现的参数选项
-XX:MaxGCPauseMillis
每次年轻代垃圾回收的最长时间(最大暂停时间)
如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.
-XX:+UseAdaptiveSizePolicy
自动选择年轻代区大小和相应的Survivor区比例
设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.
-XX:GCTimeRatio
设置垃圾回收时间占程序运行时间的百分比
公式为1/(1+n)
-XX:+ScavengeBeforeFullGC
Full GC前调用YGC
Do young generation GC prior to a full GC. (Introduced in 1.4.1.)
CMS相关参数
-XX:+UseConcMarkSweepGC
使用CMS内存收集
测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明.所以,此时年轻代大小最好用-Xmn设置.???
-XX:+AggressiveHeap
试图是使用大量的物理内存
长时间大内存使用的优化,能检查计算资源(内存, 处理器数量)
至少需要256MB内存
大量的CPU/内存, (在1.4.1在4CPU的机器上已经显示有提升)
-XX:CMSFullGCsBeforeCompaction
多少次后进行内存压缩
由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理.
-XX:+CMSParallelRemarkEnabled
降低标记停顿
-XX+UseCMSCompactAtFullCollection
在FULL GC的时候, 对年老代的压缩
CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。
可能会影响性能,但是可以消除碎片
-XX:+UseCMSInitiatingOccupancyOnly
使用手动定义初始化定义开始CMS收集
禁止hostspot自行触发CMS GC
-XX:CMSInitiatingOccupancyFraction=70
使用cms作为垃圾回收
使用70%后开始CMS收集
为了保证不出现promotion failed(见下面介绍)错误,该值的设置需要满足以下公式
-XX:CMSInitiatingPermOccupancyFraction
设置Perm Gen使用到达多少比率时触发
-XX:+CMSIncrementalMode
设置为增量模式
用于单CPU情况
-XX:+CMSClassUnloadingEnabled
-XX:+PrintGC
[GC 118250K-&0112K), 0.0094143 secs]
[Full GC 121376K-&1K), 0.0650971 secs]
-XX:+PrintGCDetails
输出形式:[GC [DefNew: 8614K-&781K(9088K), 0.0123035 secs] 118250K-&0112K), 0.0124633 secs]
[GC [DefNew: 8614K-&K), 0.0000665 secs][Tenured: 112761K-&1K), 0.0433488 secs] 121376K-&1K), 0.0436268 secs]
-XX:+PrintGCTimeStamps
-XX:+PrintGC:PrintGCTimeStamps
可与-XX:+PrintGC -XX:+PrintGCDetails混合使用
输出形式:11.851: [GC 98328K-&9K), 0.0082960 secs]
-XX:+PrintGCApplicationStoppedTime
打印垃圾回收期间程序暂停的时间.可与上面混合使用
输出形式:Total time for which application threads were stopped: 0.0468229 seconds
-XX:+PrintGCApplicationConcurrentTime
打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用
输出形式:Application time: 0.5291524 seconds
-XX:+PrintHeapAtGC
打印GC前后的详细堆栈信息
-Xloggc:filename
把相关日志信息记录到文件以便分析.
与上面几个配合使用
-XX:+PrintClassHistogram
garbage collects before printing the histogram.
-XX:+PrintTLAB
查看TLAB空间的使用情况
XX:+PrintTenuringDistribution
查看每次minor GC后新的存活周期的阈值
Desired survivor size 1048576 bytes, new threshold 7 (max 15)
new threshold 7即标识新的存活周期的阈值为7。
GC性能方面的考虑
对于GC的性能主要有2个方面的指标:吞吐量throughput(工作时间不算gc的时间占总的时间比)和暂停pause(gc发生时app对外显示的无法响应)。
1. Total Heap
默认情况下,vm会增加/减少heap大小以维持free space在整个vm中占的比例,这个比例由MinHeapFreeRatio和MaxHeapFreeRatio指定。
一般而言,server端的app会有以下规则:
对vm分配尽可能多的memory;
将Xms和Xmx设为一样的值。如果虚拟机启动时设置使用的内存比较小,这个时候又需要初始化很多对象,虚拟机就必须重复地增加内存。
处理器核数增加,内存也跟着增大。
2. The Young Generation
另外一个对于app流畅性运行影响的因素是young generation的大小。young generation越大,minor collection越少;但是在固定heap size情况下,更大的young generation就意味着小的tenured generation,就意味着更多的major collection(major collection会引发minor collection)。
NewRatio反映的是young和tenured generation的大小比例。NewSize和MaxNewSize反映的是young generation大小的下限和上限,将这两个值设为一样就固定了young generation的大小(同Xms和Xmx设为一样)。
如果希望,SurvivorRatio也可以优化survivor的大小,不过这对于性能的影响不是很大。SurvivorRatio是eden和survior大小比例。
一般而言,server端的app会有以下规则:
首先决定能分配给vm的最大的heap size,然后设定最佳的young generation的大小;
如果heap size固定后,增加young generation的大小意味着减小tenured generation大小。让tenured generation在任何时候够大,能够容纳所有live的data(留10%-20%的空余)。
经验&&规则
年轻代大小选择
响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择).在此种情况下,年轻代收集发生的频率也是最小的.同时,减少到达年老代的对象.
吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度.因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用.
避免设置过小.当新生代设置过小时会导致:1.YGC次数更加频繁 2.可能导致YGC对象直接进入旧生代,如果此时旧生代满了,会触发FGC.
年老代大小选择
响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数.如果堆设置小了,可以会造成内存碎 片,高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间.最优化的方案,一般需要参考以下数据获得:
并发垃圾收集信息、持久代并发收集次数、传统GC信息、花在年轻代和年老代回收上的时间比例。
吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代.原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象.
较小堆引起的碎片问题
因为年老代的并发收集器使用标记,清除算法,所以不会对堆进行压缩.当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象.但是,当堆空间较小时,运行一段时间以后,就会出现"碎片",如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记,清除方式进行回收.如果出现"碎片",可能需要进行如下配置:
-XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩.
-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩
用64位操作系统,Linux下64位的jdk比32位jdk要慢一些,但是吃得内存更多,吞吐量更大
XMX和XMS设置一样大,MaxPermSize和MinPermSize设置一样大,这样可以减轻伸缩堆大小带来的压力
使用CMS的好处是用尽量少的新生代,经验值是128M-256M, 然后老生代利用CMS并行收集, 这样能保证系统低延迟的吞吐效率。 实际上cms的收集停顿时间非常的短,2G的内存, 大约20-80ms的应用程序停顿时间
系统停顿的时候可能是GC的问题也可能是程序的问题,多用jmap和jstack查看,或者killall -3 java,然后查看java控制台日志,能看出很多问题。(相关工具的使用方法将在后面的blog中介绍)
仔细了解自己的应用,如果用了缓存,那么年老代应该大一些,缓存的HashMap不应该无限制长,建议采用LRU算法的Map做缓存,LRUMap的最大长度也要根据实际情况设定。
采用并发回收时,年轻代小一点,年老代要大,因为年老大用的是并发回收,即使时间长点也不会影响其他程序继续运行,网站不会停顿
JVM参数的设置(特别是 –Xmx –Xms –Xmn -XX:SurvivorRatio
-XX:MaxTenuringThreshold等参数的设置没有一个固定的公式,需要根据PV old区实际数据 YGC次数等多方面来衡量。为了避免promotion faild可能会导致xmn设置偏小,也意味着YGC的次数会增多,处理并发访问的能力下降等问题。每个参数的调整都需要经过详细的性能测试,才能找到特定应用的最佳配置。
promotion failed:
垃圾回收时promotion failed是个很头痛的问题,一般可能是两种原因产生,第一个原因是救助空间不够,救助空间里的对象还不应该被移动到年老代,但年轻代又有很多对象需要放入救助空间;第二个原因是年老代没有足够的空间接纳来自年轻代的对象;这两种情况都会转向Full GC,网站停顿时间较长。
解决方方案一:
第一个原因我的最终解决办法是去掉救助空间,设置-XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0即可,第二个原因我的解决办法是设置CMSInitiatingOccupancyFraction为某个值(假设70),这样年老代空间到70%时就开始执行CMS,年老代有足够的空间接纳来自年轻代的对象。
解决方案一的改进方案:
又有改进了,上面方法不太好,因为没有用到救助空间,所以年老代容易满,CMS执行会比较频繁。我改善了一下,还是用救助空间,但是把救助空间加大,这样也不会有promotion failed。具体操作上,32位Linux和64位Linux好像不一样,64位系统似乎只要配置MaxTenuringThreshold参数,CMS还是有暂停。为了解决暂停问题和promotion failed问题,最后我设置-XX:SurvivorRatio=1 ,并把MaxTenuringThreshold去掉,这样即没有暂停又不会有promotoin failed,而且更重要的是,年老代和永久代上升非常慢(因为好多对象到不了年老代就被回收了),所以CMS执行频率非常低,好几个小时才执行一次,这样,服务器都不用重启了。
-Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=500M -XX:MaxPermSize=500M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log
CMSInitiatingOccupancyFraction值与Xmn的关系公式
上面介绍了promontion faild产生的原因是EDEN空间不足的情况下将EDEN与From survivor中的存活对象存入To survivor区时,To survivor区的空间不足,再次晋升到old gen区,而old gen区内存也不够的情况下产生了promontion faild从而导致full gc.那可以推断出:eden+from survivor & old gen区剩余内存时,不会出现promontion faild的情况,即:
(Xmx-Xmn)*(1-CMSInitiatingOccupancyFraction/100)&=(Xmn-Xmn/(SurvivorRatior+2))
进而推断出:
CMSInitiatingOccupancyFraction &=((Xmx-Xmn)-(Xmn-Xmn/(SurvivorRatior+2)))/(Xmx-Xmn)*100
当xmx=128 xmn=36 SurvivorRatior=1时 CMSInitiatingOccupancyFraction&=((128.0-36)-(36-36/(1+2)))/(128-36)*100 =73.913
当xmx=128 xmn=24 SurvivorRatior=1时 CMSInitiatingOccupancyFraction&=((128.0-24)-(24-24/(1+2)))/(128-24)*100=84.615…
当xmx=3000 xmn=600 SurvivorRatior=1时
CMSInitiatingOccupancyFraction&=(()-(600-600/(1+2)))/(0=83.33
CMSInitiatingOccupancyFraction低于70% 需要调整xmn或SurvivorRatior值。
推断出的公式是::(Xmx-Xmn)*(100-CMSInitiatingOccupancyFraction)/100&=Xmn 这个公式个人认为不是很严谨,在内存小的时候会影响xmn的计算。
关于实际环境的GC参数配置见:
JAVA HOTSPOT VM()
(内附测试例子 很有用)
没有更多推荐了,}

我要回帖

更多关于 我是不是没救了 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信