google 工程师Jeff Dean 首先在他关于分布式系统的ppt文档列出来的,处处被引用的不少。缓存
1秒=10^3毫秒=10^6微妙=10^9纳秒=10^12皮秒网络
读 cache ns 级,读内存100 ns,从内存顺序读1MB 250,000ns,从磁盘读一MB30ms分布式
Numbers Everyone Should Know线程
L1 cache reference 读取CPU的一级缓存 | 0.5 ns |
Branch mispredict(转移、分支预测) | 5 ns |
L2 cache reference 读取CPU的二级缓存 | 7 ns |
Mutex lock/unlock 互斥锁\解锁 | 100 ns |
Main memory reference 读取内存数据??? | 100 ns |
Compress 1K bytes with Zippy 1k字节压缩 | 10,000 ns |
Send 2K bytes over 1 Gbps network 在1Gbps的网络上发送2k字节 | 20,000 ns |
Read 1 MB sequentially from memory 从内存顺序读取1MB | 250,000 ns【0.25ms】 |
Round trip within same datacenter 从一个数据中心往返一次,ping一下 | 500,000 ns 【0.5ms】 |
Disk seek 磁盘搜索 | 10,000,000 ns 【10ms】 |
Read 1 MB sequentially from network 从网络上顺序读取1兆的数据 | 10,000,000 ns 【10ms】 |
Read 1 MB sequentially from disk 从磁盘里面读出1MB | 30,000,000 ns 【30ms】 |
Send packet CA->Netherlands->CA 一个包的一次远程访问 | 150,000,000 ns【150ms】 |
从小到大: 进程
CPU的时钟频率:CPU运算时的工做的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。 ip
CPU周期:读取一个指令节所需的时间内存
指令周期:读取并执行完一个指令所需的时间资源
CPU时间片:CPU分给每一个进程的时间文档
在Linux上CPU调度的最小单位时间片单位为5ms-800ms。
Linux调度器实际是识别task_struct进行调度。 不管进程线程,底层都对应一个task_struct,进程和线程的区别是共享资源的多少,两个进程间彻底不共享资源,两个线程间共享全部资源。