重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
计算机及操作系统原理:
为兴县等地区用户提供了全套网页设计制作服务,及兴县网站建设行业解决方案。主营业务为做网站、网站建设、兴县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
OS
32bit , 64bit , 2^32=4G 2^64几乎无穷大
CPU线路复用
PAE:Physical Address Extension 物理地址扩展
32bit,+4bit = 64G
程序具有局部性, 置换策略
空间局部性,时间局部性
CPU具有多级缓存 多级缓存静态RAM
N路关联
缓存缩影
路数越多命中几率越大
逐级置换
CPU只跟一级缓存打交道
Write through 通写
Write Back 回写 数据在丢失的时候写入主存
显卡 Video Card 需要与CPU直接交互
PCI-E SSD M2
IO Port 一片连续端口 总线复用
poll机制 通知机制
中断控制器 Interrupt Controller
临界区 有可能产生竞争的地方
DMA:直接内存访问
OS:VM
CPU:
时间,切片
缓存,缓存当前程序数据
进程切换:保存现场、恢复现场
内存分隔
4K,page , page frame(页框)
指令,数据,堆,栈
进程描述结构
线性地址 虚拟地址 页目录
物理地址
目录是一种映射关系
内存,将物理地址转换成线性地址 可以实现内存保护 空间映射
I/O操作 中断
内核 --> 进程
CPU有两种模式 :用户模式,内核模式
CPU 4层环模式
模拟 仿真
进程状态:
Ready
Sleeping
可打断
不可打断
进程与操作系统之间关系:
进程描述符
进程元数据
双向链表
linux支持进程抢占
系统时钟,内部时钟频率 tick 时钟中断
进程类型:
交互式进程(I/O)
批处理进程(CPU密集型)
实时进程(Real-time)
CPU:时间片长,优先级低
IO :时间片短,优先级高
Linux优先级:priority
实时优先级:1-99,数字越小,优先级越低
静态优先级:100-139,数字越小,优先级越高
-20 0 19 100 ,139 nice为0 对应静态优先级 100
实时优先级比静态优先级高
ps -e -o class,rtprio,pri,nice,cmd
nice值:调整静态优先级
有中括号表示内核线程
调度类别:
实时进程:
SCHED_FIFO First In First out
SCHED_RR Round Robin
SCHED_Other:用来调度100-139之间的进程
动态优先级:
dynamic priority = max(100,min (static priority -bonus +5,139) )
手动调整优先级:
100-139 nice
nice N COMMAND
renice -n # PID
chrt -p [prio] PID
1-99
chrt -f -p [prio] PID
chrt -r -p [prio] PID
Linux系统139个队列
扫描队列 99-1,100-139 活动队列和过期队列 两者对换
linux2.6以后 CPQ:Complete Fair Scheduler SCHED_Other
Kernel --> init
init fork():系统调用
task_struct
Memory -->Parent
COW :Copy On Write
RHEL6.4
tick less 无时钟中断
interrupt-driven
硬中断
软中断
深度睡眠
一级缓存 I1 指令1,D1 Data1
SMP 对称多处理器 一个CPU插槽叫一个socket
NUMA 非统一内存访问
numastat 命令
numactl命令
numad命令
CPU affinity:CPU姻亲关系
taskset:绑定进程至某CPU上
for example :
taskset -p mask pid
taskset -p -c 0-2,7 101 将101进程绑定在cpu0,1,2,7上
应该将中断绑定至那些非隔离的CPU上,从而避免那些隔离的CPU处理中断程序;
echo CPU_MASK > /proc/
rpm -qf sysstat
mpstat
vmstat
sar -w 上下文切换的次数
taskset -p -c 0 16380
虚拟化环境:
PA —>HA —>MA
虚拟机转换:PA—>HA
GuestOS, OS
Shadow PT
Memory:
TLB:提升性能
Hugetable page
hugetlbfs 文件系统
cat /proc/meminfo | grep Hugepages
sysctl -w vm.nr_hugepages=10 启用大页面
strace :
strace COMMAND :查看命令的syscall
strace -p PID :查看已经启动进程的syscall
-c :中输出其概括信息;
-o FILE :将追踪结果保存至文件中,以供后续分析使用;
slab
Strategies for using memory
1、降低微型内存对象的系统开销
slab
2、缩减慢速子系统的服务时间
使用buffer cache 缓存文件元数据
使用page cache缓存DISK IO;
使用shm完成进程间通信;
使用buffer cache ,arp cache 和connetion tracking提升网络IO性能
内存耗尽,系统崩溃
Tuning page allocation
物理内存的过量使用是以swap为前提的:
超过物理内存一部分
Swap
Tuning overcommit
ls /proc/1 oom_score
slabtop命令
slab cache
ARP cache
Tuning ARP cache
Page cache
vfs_cache_pressure
0:不回收dentries和inodes;
1-99 :倾向于不回收;
100:倾向性与page cache 和 swap cache相同;
100+:倾向于回收;
使用swap时会使用到page-cluster 虚拟化环境会使用到
Anonymous pages
进程间通信使用匿名页
/proc , /sys
CPU使用,内存使用
性能指标,关闭不必要进程
性能调优:
进程管理,CPU
内存调优
I/O
文件系统
网络子系统
调优思路:
性能指标,定位瓶颈
综合调优
系统级别调优工具:
SystemTap
Oprofile
Valgrind
Perf
进程间通信管理类命令
ipcs -l
ipcrm
sharememory
shmmni:系统级别,所允许使用的共享内存段上限;
shmall :系统级别,能够为共享内存分配使用的最大页面数;
shmmax:单个共享内存段的上限;
Message
msgmnb:单个消息队列的上限,单位为字节;
msgmni:系统级别,消息队列个数上限;
msgmax:单个消息大小的上限,单位为字节;
按需调整,一般情况都是调大
Tuning pdflush
1、周期性,2、观察式 3、脏页占有率
手动清写脏缓存和缓存
内存耗尽时
Out-of-memory killer
oom-adj
-17:disables the oom_killer for that process
-16-15 :协助计算oom-score
oom-adj超高,oom-score分数越大,被杀死几率越大
内存泄露查看方法:
valgrind --tool=memcheck cat /proc/$$/maps
内存子系统需要调节的几大类
HugePage :TLB
IPC
pdflush
slab
swap
oom