[toc]
进程调度
| OS:硬件抽象,虚拟计算机 |
| system call |
| CPU: time slice |
| 获得CPU权限的优先级,有些进程的优先级是可以被提高的 |
| 调度器(本身也是个程序): CFS Big O |
| O(1) 一个算法的时间复杂度 |
| 0-139 |
| 0-99 |
| 100-139: |
| nice |
| Memory: |
| 虚拟地址空间 |
| PAE:物理地址扩 32bits,寻址的物理空间是4G,4bits是额外引入的,所以被称为PAE技术(64G) |
| 也就是说它的线性地址空间依然为4G |
| |
| MySQL:单进程多线程 |
| 可以使用2.7G左右,因此使用PAE技术对MySQL没有技术,因此使用MySQL服务时,建议使用64位的 |
| page frame: 分页技术 |
| 物理地址中的内存空间,被划分成了多个页面空间,都被组织成为多个页面形势 |
| 从页面到页框完成映射的 |
| 一个进程读取数据时,首先需要把数据载入到内存中。遇到经常被调用的数据时,可以配置缓存 |
| 如果缓存不断的命中,则说明性能可以不断的提高,将频繁被访问数据放到CPU缓存中 |
| 对于CPU来说,CPU的缓存对提高CPU的性能是至关重要的 |
| 缓存空间通常是按倍相差的 |
| TLB 转换后元缓存器 |
| page frame: |
| huge page: 使用大页,来提升TLB的命中率 |
| 0000 |
| 0001 |
| 0101 |
| 1111 |
| cpu 1,3 |
| |
| 两中拆中方法,拿时间换空间,拿空间换时间 |
| 较专业的服务器上会有NUMA的结构,非一致内存访问,NUMA结构的前题是,要有多颗CPU |
| 将进程和CPU完成亲和性绑定,进程命中CPU缓存的命中率,将会变的很高 |
CPU调优操作
| # 查看当前进和运行在哪颗CPU |
| # ps axo psr,comm,pid |
| # cat /proc/cpuinfo |
| # 定义进程号为 11215的进程绑定在第四颗CPU上 |
| # taskset -p -c 3 11215 (为个命令的格式比较诡异) |
| # taskset -p cpu1,cpu2,... pid |
| # vim /boot/grup/grub.conf kernel 行加上 isol = 2,3 |
| # cat /proc/interrupts |
| # ls /proc/irq/0/ |
| # cat /proc/irq/0/smp_affinity |
| ffffffff,ffffffff 表示任意CPU |
| |
| # echo 1 > /proc/irq/32/smp_affinity |
| # cat /proc/irq/32/smp_affinity |
| # cat |
| # 对于生产来说,越简单,越标准会好 |
| # 压榨系统资源,会造成系统不稳定的,不到万不得已,不建议这样做的 |
| # nice, renice 经常用到的进程优先级的调整 |
定义中断 smp affinityy:
| |
| chrt -f [1-99] /path/to/program arguments |
| |
| chrt -f [1-99] /path/to/program arguments |
| |
| 进程的调度类别: |
| SCHEd_FIFO, SCHED_RR:real-time |
| |
| SCHED_NORMAL, SCHED_OTHER: 100-139 |
| nice,renice (对于已启动的进程使用renice启动) |
| 建议使用CPU Utilization工具: |
| htop,dstat,glances,sar |
| w,uptime, vmstat 1 5 |
| |
| |
| |
| /proc,/sys |
| |
| DMA: 直接内存访问 |
| |
| CPU跟外部IO设备交互的方式: |
| poll:轮询,忙等待 |
| 中断: |
| CPU: 调优 |
| cpu affinity |
| 优先级调整 |
| cgroups, |
| 内存: |
| overcommit_memory |
| msg |
| shm |
补充nginx 优化加速
给Nginx上 ngx_http_gzip_module 这个模块;
用 nginx -V 命令查看 configure arguments 是否有
没有的话需要编译加载这个模块
| |
| |
| gzip on; |
| |
| |
| gzip_buffers 16 8k; |
| |
| |
| gzip_comp_level 6; |
| |
| |
| gzip_http_version 1.1; |
| |
| |
| gzip_min_length 256; |
| |
| |
| gzip_proxied any; |
| |
| |
| gzip_vary on; |
| |
| |
| gzip_types |
| text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml |
| text/javascript application/javascript application/x-javascript |
| text/x-json application/json application/x-web-app-manifest+json |
| text/css text/plain text/x-component |
| font/opentype font/ttf application/x-font-ttf application/vnd.ms-fontobject |
| image/x-icon; |
| |
| |
| gzip_disable "MSIE [1-6]\.(?!.*SV1)"; |
| |
| |
| |
| |
| location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { |
| expires 30d; |
| access_log off; |
| } |
| |
| location ~ .*\.(eot|ttf|otf|woff|svg)$ { |
| expires 30d; |
| access_log off; |
| } |
| |
| location ~ .*\.(js|css)?$ { |
| expires 7d; |
| access_log off; |
| } |