分类: LINUX
2016-06-16 11:21:09
- 服务器架构:smp(对称多处理);numa(非对称),每个CPU与各自的内存控制器绑定好,本地调用内存
- cpu与内存通信的三种模式:中断(输入设备通过中断控制器将信号传递给CPU,cpu通知内核调度)、盲听(CPU一直在询问内存是否有数据要传输过来)、DMA方式直接内存存取
- 中断控制器:主板上有中断控制器针脚,一个中断线上面有多个中断信号,即中断向量来中断上下文切换
- TCP三次握手中,发起fin断连请求侧最后一个状态是timewait,timewait的存活时间是2个MSL(报文段寿命,一般2分钟)
- 调优策略:1、先找瓶颈 2、问题还原
- CPU 亲源性: taskset命令将CPU核与进程绑定 操作命令:taskset -c cpu核 程序ip 例子:task -pc 1 2047 将2047进程绑定到1核;(使用命令绑定后状态:watch -n 1"ps axo pid,psr|grep 2047")
- 进程调度:实时进程(1-99)即内核进程,值越大优先级越高,占用CPU时间也就越长 策略:chrt_other(default)先入先出、sched_idle、sched_batch) 用户进程:100-139,值越大优先级越低,使用renice调整,只能将优先级调低,默认方式CFS(完成公平),内核回到交互式进程(用户进程)有惩罚措施,即进程过长占用CPU时间会打低分再次占用CPU时间片后延;再低的实时进程优先级也会比用户进程的要高,web调优的时候经常会把nginx进程优先级调为实时进程低优先级就是这个意思
- 中断: IRQ调节,查看/proc/interrupts中断信息;ISR中断服务路由;优化目的:减少中断上下文切换
- 内存中数据怎么被组织:物理内存被组织成页框;进程线性地址空间被组织成页面。 MMU进程启动装载,存物理内存与vm对应关系,页表在MMU中;调内存几个常用的内核参数:msgmax消息最大值,msgnb消息队列最大值,msgmni可用消息队列最大值,32位系统:1736,64位系统:1985;shmall单位时间一次使用共享内存总量,shmmax:一个连续共享内存片最大值(单片最大值),shmni:多少个片,thread_max:内存一次可用创建多少个线程 oom,内核一种过负荷后保护策略,避免系统恐慌解救系统;参数分比为0 1 2;0(内存用完后按照相应的策略选择杀哪个进程 1(忘记了) 2(根据前面进程部分提到的进程惩罚分数,选择杀哪个进程)
- 系统突然断线丢失多少数据,取决于dirty_wrireback_centises =500毫秒
- echo s > /proc/sysrq-trigger 刷新脏页数据(变更过得数据)到磁盘,避免突然宕机丢数据
- 机械硬盘提升性能:读写方向不同相邻磁道扇区合并一个
- IO存取策略:取得优先级大,存的话内存队列隔断时间刷写到硬盘,从用户感知角度来说对读敏感度大,就像58同城架构师沈剑说的一样,对两个方向取舍如buy,sell,在业务量突然非常大的情况下,首先要考虑用户下单成功,然后再去修复卖家表,内存给予磁盘读的优先性远远大于我们的想象,这里不具体说了;脏页刷新几个参数:diry_ratio、dirty_background_ratio、dirty_expired_centisecs
- RSS常驻内存集,数据不被置换到磁盘
- flush系统内核线程负责将脏数据写入磁盘
- 机械硬盘:100个IOPS 固态硬盘:300-400个IOPS、PCI-e固态:数十万IOPS
- 网络IO:请求过来后,内核在内存中创建一块空间存socket,为保证进程公平有文件描述符来限制进程连接;请求--->内核缓冲--->用户空间
- irqbalance开启服务,会将软中断请求分到各CPU核上