在现有文件系统下进行优化:
linux内核和各个文件系统采用了几个优化方案来提升磁盘访问速度。但这些优化方案需要在我们的服务器设计中进行配合才能得到充分发挥。
文件系统缓存
linux内核会将大部分空闲内存交给虚拟文件系统,来作为文件缓存,叫做page cache。在内存不足时,这部分内存会采用lru算法进行淘汰。通过free命令查看内存,显示为cached的部分就是文件缓存了。
如何针对性优化:
lru并不是一个优秀淘汰算法,lru最大的优势是普适性好,在各种使用场景下都能起到一定的效果。如果能找到当前使用场景下,文件被访问的统计特征,针 对性的写一个淘汰算法,可以大幅提升文件缓存的命中率。对于http正向代理来说,一个好的淘汰算法可以用1GB内存达到lru算法100GB内存的缓存 效果。如果不打算写一个新的淘汰算法,一般不需要在应用层再搭一个文件cache程序来做缓存。
最小分配:
当文件扩大,需要分配磁盘空间时,大部分文件系统不会仅仅只分配当前需要的磁盘空间,而是会多分配一些磁盘空间。这样下次文件扩大时就可以使用已经分配好的空间,而不会频繁的去分配新空间。
例如ext3下,每次分配磁盘空间时,最小是分配8KB。
最小分配的副作用是会浪费一些磁盘空间(分配了但是又没有使用)
如何针对性优化:
我们在reiserfs下将最小分配空间从8KB改大到128K后提升了30%的磁盘io性能。如果当前使用场景下小文件很多,把预分配改大就会浪费很多 磁盘空间,所以这个数值要根据当前使用场景来设定。似乎要直接改源代码才能生效,不太记得了,09年的时候改的,有兴趣的同学自己google吧。
io访问调度:
在同时有多个io访问时,linux内核可以对这些io访问按LBA进行合并和排序,这样磁头在移动时,可以“顺便”读出移动过程中的数据。
SATA等磁盘甚至在磁盘中内置了io排序来进一步提升性能,一般需要在主板中进行配置才能启动磁盘内置io排序。linux的io排序是根据LBA进行的,但LBA是一个一维线性地址,无法完全反应出二维的圆形磁盘,所以磁盘的内置io排序能达到更好的效果。
如何针对性优化:
io访问调度能大幅提升io性能,前提是应用层同时发起了足够的io访问供linux去调度。
怎样才能从应用层同时向内核发起多个io访问呢?
方案一是用aio_read异步发起多个文件读写请求。
方案二是使用磁盘线程池同时发起多个文件读写请求。
对我们的http正向代理来说,采用16个线程读写磁盘可以将性能提升到2.5倍左右。具体开多少个线程/进程,可以根据具体使用场景来决定。
小提示:
将文件句柄设置为非阻塞时,进程还是会睡眠等待磁盘io,非阻塞对于文件读写是不生效的。在正常情况下,读文件只会引入十几毫秒睡眠,所以不太明显;而在磁盘io极大时,读文件会引起十秒以上的进程睡眠。
预读取:
linux内核可以预测我们“将来的读请求”并提前将数据读取出来。通过预读取可以减少读io的次数,并且减小读请求的延时。
如何针对性优化:
预读取的预测准确率是有限的,与其依赖预读取,不如我们直接开一个较大的缓冲区,一次性将文件读出来再慢慢处理;尽量不要开一个较小的缓冲区,循环读文件/处理文件。
虽然说“预读取”和“延迟分配”能起到类似的作用,但是我们自己扩大读写缓冲区效果要更好。
延迟分配:
当文件扩大,需要分配磁盘空间时,可以不立即进行分配,而是暂存在内存中,将多次分配磁盘空间的请求聚合在一起后,再进行一次性分配。
延迟分配的目的也是减少分配次数,从而减少文件不连续。
延迟分配的副作用有几个:
1、如果应用程序每次写数据后都通过fsync等接口进行强制刷新,延迟分配将不起作用
2、延迟分配有可能间歇性引入一个较大的磁盘IO延时(因为要一次性向磁盘写入较多数据)
只有少数新文件系统支持这个特性
如何针对性优化:
如果不是对安全性(是否允许丢失)要求极高的数据,可以直接在应用程序里缓存起来,积累到一定大小再写入,效果比文件系统的延迟分配更好。如果对安全性要求极高,建议经常用fsync强制刷新。
在线磁盘碎片整理:
Ext4提供了一款碎片整理工具,叫e4defrag,主要包含三个功能:
1、让每个文件连续存储
2、尽量让每个目录下的文件连续存储
3、通过整理空闲磁盘空间,让接下来的分配更不容易产生碎片
如何针对性优化:
“让每个目录下的文件连续存储”是一个极有价值的功能。
传统的做法是通过拼接图片来将这10张图片合并到一张大图中,再由前端将大图切成10张小图。
有了e4defrag后,可以将需连续访问的文件放在同一个文件夹下,再定期使用e4defrag进行磁盘整理。
实现自己的文件系统:
在大部分服务器上,不需要支持“修改文件”这个功能。一旦文件创建好,就不能再做修改操作,只支持读取和删除。在这个前提下,我们可以消灭所有文件碎片,把磁盘io效率提升到理论极限。
有一个公式可以衡量磁盘io的效率:
磁盘利用率 = 传输时间/(平均寻道时间+传输时间)
如若满意,请点击回答右侧【采纳答案】,如若还有问题,请点击【追问】
~ O(∩_∩)O~
首先得同时代的比较,同时代的服务器CPU和家用CPU,首先差距最大的是核心数,服务器的要执行各种并发任务,核心数通常比较多,这是服务器CPU的优点。
缺点就是CPU主频偏低,而玩 游戏 ,尤其是多人网游,或者是模拟经营性的 游戏 ,对CPU主频要求高,所以服务器CPU就不适合打 游戏 。
一般家用机配服务器CPU有两种情况:
1.买新的。前几年的e3神教,那时候和家用机主板通用,性能也不低。
2.淘汰的服务器CPU,主要是 游戏 挂机多开,工作室用的多,个人不建议碰,网上卖的各种i7级i9级都是这种。
一个是服务器CPU(目前很多大型 科技 公司都在建立自己的服务器基地:最出名的华为七星湖)
另一个含义:电脑上的cpu(普通)
先规定一下讨论的范畴,那就是这里只说X86架构的CPU,一般来说服务器CPU和普通CPU相比,往往有以下特点, 主频低,核心多,IO性能更强,更注重稳定性等方面 。
先看看主频部分,目前桌面处理器已经突破了5GHz,而服务器CPU的频率往往也就4GHz左右,核心数量越多,频率往往也越低,我们可以看看最新的AMD EPYC系列产品规格表,可以看到频率最高72F3是8核16线程的产品,主频才4.1GHz,而AMD桌面的8核16线程CPU早就是4.7GHz的水平了。
不过服务器的核心数量优势还是很明显的,最高达到了64核,不过最大单核主频只有3.675GHz,而且服务器上面是 支持多CPU互联的 ,而桌面(含HEDT平台)就不支持这种技术了,而且目前桌面最高端产品R9-5950X最高也才16核心,不过单核最高频率达到了4.9GHz。
说完了频率和核心的差异,再来说说IO性能的差异,服务器的IO性能是可以秒掉桌面平台的,在内存支持方面桌面处理器还是双通道内存,而服务器CPU已经支持8通道了,在PCI-E通道数量上,服务器CPU也远超普通桌面CPU,可以看到AMD EPYC服务器CPU支持高达128条PCI-E通道,而桌面CPU往往也就支持20条左右。
稳定性这个就不用多说了,服务器往往都是7X24小时全年运行,其对稳定性的要求自然特别高,所以除了CPU,配套的主板内存这些往往也会注重稳定性,这样子的结果就是服务器开机自检相比PC电脑特别慢,搭配的内存规格往往也不高,很多服务器主板看上去也没有那么多的接口,看上去给人一种简陋的感觉。此外候服务器CPU会先采用新指令集,譬如Intel的AVX 512就是率先在服务器上采用。
看完服务器CPU和普通CPU的区别,相信很多人对服务器CPU的兴趣会减低很多,原因也很简单,那就是目前桌面CPU的核心线程数量已经足够大部分用户使用了,而且桌面处理器的频率比服务器高得多,所以在 游戏 性能上面,桌面CPU具有更好的体验。
总的来说,在今天服务器CPU对于个人用户而言,早就没有选择的必要了,现在已经不是当年了,当年桌面处理器上面最高也就4核心8线程,服务器CPU的核心优势很明显,现在桌面上8核心16线程不算什么了,16核心32线程也有了,服务器CPU早就不香了,如果不是玩家,真的没有必要去碰服务器CPU了。
服务器处理器擅长处理多个简单任务,比如同时处理数十万用户访问网页。PC处理器擅长单个或少数几个复杂任务。
服务器cpu拿来跑 游戏 会很痛苦的。适合多线程作业
缓存和指令集,最重要的是价格,普通玩家没必要要至强类的cpu
普通的CPU性能侧重于多媒体方面的应用,是需要和操作系统配合,才能发挥其相关的能力的。常见的个人window7、windows10等系统都是这一类。
服务器CPU性能侧重于数据处理方面的应用!它的操作系统有unix. lnix. windows2000 server等等!尤其是对各种数据库的优化!
所以架构和设计方面就有很大的不同。服务器CPU在在硬件的支持下,可以支持256.512.1024.2048个,或者更多数量的同时工作。也支持热拔插,就是带电作业!
服务器的CPU更加稳定,可以常年累月的不关机,并处于工作状态!而且有了其它硬件的配合,不死机,不蓝屏!目前很多淘汰的洋垃圾,就有至强和安腾处理器。无良商家就用这种服务器CPU忽悠小白们!淘宝、拼多多的所谓低价高配,相当于酷睿九代十代的电脑就是这么来的!
最后再说一下,因为使用的目的、场合不同,两者在设计制造的时候,就有很多的不同!比如电子电路的布局,一、二、三级缓存的设计!各种指令集,固件,都是不一样的!
最主要的区别就是服务器CPU性能稳定,能操持7*24小时工作平衡状态
普通CPU性能根据工作状态需要即时调整,一般用于 游戏 方面,不能长时间工作
只是打打字,看看文章,两者倒是可以通用。
服务器CPU相比普通CPU,核心和线程数更多,但主频相对较低,不适合玩 游戏 ,稳定性和安全性更强,而且价格也相对较高。但英特尔的E3系列服务器处理器是个例外,e3处理器硬件规格和同代的i7非常接近,而价格比i7更低,玩 游戏 也没有太大问题,像e3-1230v3及前代处理器可以使用同代酷睿主板,由于性价比非常高,所以深受电脑玩家的喜爱,这些处理器也被称为e3大法。由于intel担心e3处理器影响i7的销量,所以对e3处理器进行封杀,像后续的e3-1230v5已经无法使用普通主板,必须搭配专用主板才能使用,另外价格也没有任何优势了,所以E3大法也就基本淡出市场了。
对于老百姓来说,价格是最明显的区别,从性能上来说,那就是服务器的更加稳定一些,容错性更高一点。其他的没啥差别,服务器cpu就是比家用更贵,更好,更稳定。同样级别的服务器要比家用贵很多,还必须用配套设备,不然光一个cpu.体现不了专业的价值。
微软将Windows erver2016部分功能调优涉及服务器硬件、硬件电源、服务器任务。选择适当的硬件是必要的,以满足你的预期性能和功率目标。硬件阻塞通常限制软件调优的有效性。这里提供硬件提示,以确保服务器可以发挥作用的良好基础。
1.硬件性能注意事项:处理器,缓存,内存,外设总线,磁盘,网络和存储适配器在你的服务器性能中都起着重要作用。因此,重要的是考虑所有建议,以消除可能阻碍服务器性能的瓶颈。
2.硬件电源注意事项:确定企业和数据中心环境中能源效率日益增长的重要性非常重要。要实现高性能和低能耗使用之间的正确平衡,需要仔细选择服务器组件。微软列出了服务器硬件组件的电源特性和功能的准则。
3.服务器任务调优
该指南对于部署任务的人来说非常有帮助:
活动目录
Hyper-V服务器
文件服务器
远程桌面服务器
Web服务器
Windows服务器容器
服务器子系统调优
缓存和内存管理:排除缓存和内存管理器性能中的问题,并检查Windows Server 2016中的缓存管理器和内存管理器改进。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)