《性能调优攻略|系统调优》要点:
本文介绍了性能调优攻略|系统调优,希望对您有用。如果有疑问,可以联系我们。
我们都知道,Unix/Linux 下把所有的设备都当成文件来进行 I/O,所以大部分操作都是 I/O 相关的系统调用.主要的 I/O 方式如下:
同步阻塞式 I/O;
同步无阻塞式;
I/O 异步;
AIO 方式.这种 I/O 模型是一种处理与I/O 并行的模型.I/O 哀求会立即返回,说明哀求已经成功发起.
AIO 方式因为没有任务的阻塞,无论是 I/O,还是事件通知上,都可以充分利用 CPU,比起同步无阻塞好处就是不需要轮询.
Nignx 的高效,就是通过使用 epoll 的 AIO 方式来进行 I/O 的.
关于 CPU 的多核技术,我们知道,CPU0是很关键,如果0号 CPU 利用率比较高,则性能下降比较利害,因为 CPU0具有调整功能,所以,不能任由操作系统负载均衡.通过手动分配 CPU 核,让其不过多占用 CPU0,或者通过分离关键进程和非关键进程各占其核.
多核CPU 还有一个技术叫 NUMA 技术(Non-Uniform Memory Access).传统的多核运算是使用 SMP(Symmetric Multi-Processor)模型,多个处理器共享一个集中的存储器和I/O 总线.因此才会有一致存储器拜访的问题,一致性意味着性能问题.
在 Linux 下,对 NUMA 调优的命令是:numactl.如下面的命令:(指定命令“program arg1 arg2”运行在node 0 上,其内存分配在node 0 和 1上)
numactl --cpubind=0 --membind=0,1 program arg1 arg2
上面这个命令并不好,因为内存跨越了两个node,这非常不好.最好的方式是只让程序拜访和自己运行一样的node,如:
numactl --membind 1 --cpunodebind 1 --localalloc application
关于文件系统,因为文件系统也是有 cache 的,所以,为了文件系统有最大的性能.首要的事情就是分配足够大的内存,这个非常关键,在 Linux 下可以使用 free 命令来查看 free/used/buffers/cached,总的来说,buffers 和 cached 应该有40%左右.目前速度比较快还 Intel SSD 固态硬盘,但是写次数有限.
对于文件系统调优,是通过修改配置,对于 Linux 的 Ext3/4来说,几乎在所胡情况下都有所帮助的一个参数是关闭文件系统拜访时间,在/etc/fstab 下可以看文件系统有没有 noatime 参数,还有一个是 dealloc,它可以让系统在最后时刻决定写入文件发生时使用哪个块,可优化这个写入程序.
对于日志模式:joumal、ordered、writeback.默认设置 data=ordered 提供性能和防护之间的最佳平衡.对于 Ext4默认设置基本上是最佳优化了.
在 Linux 下查看 I/O 的使用——iotop,可以帮助你查看各个进程的磁盘读写负载情况.
真正提高 I/O 性能方式是把和外设 I/O 的次数降到最低,最好没有.通常对于读来说,内存 cache 可以从质上提升性能,因为内存比外设快太多.对于写来说,cache 主要写的数据,少写几次,但是 cache 带来的问题就是实时性的问题,也就是 Latency 会变大.我们就需要在写的次数上做相应平衡.
谢谢!大家读完此文,欢迎大家留言讨论系统调优过程中还有哪些办理方案.
《性能调优攻略|系统调优》是否对您有启发,欢迎查看更多与《性能调优攻略|系统调优》相关教程,学精学透。维易PHP学院为您提供精彩教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/7851.html