CPU资源和内存资源的差异
CPU 可分配的是使用时间,也就是操作系统管理的时间片,每个进程在一定的时间片里运行自己的任务(另外一种方式是绑核,也就是把 CPU 完全分配给某个应用使用,但这种方式不够灵活会造成严重的资源浪费);而对于内存,系统提供的是内存大小。
CPU 的使用时间是可压缩的,换句话说它本身无状态,申请资源很快,也能快速正常回收;而内存大小是不可压缩的,因为它是有状态的(内存里面保存的数据),申请资源很慢(需要计算和分配内存块的空间),并且回收可能失败(被占用的内存一般不可回收)。
因此我们一般会认为CPU是可压缩资源而内存是不可压缩资源。
把资源分成可压缩和不可压缩,是因为在资源不足的时候,它们的表现很不一样。对于不可压缩资源,如果资源不足,也就无法继续申请资源(内存用完就是用完了),并且会导致应用运行产生无法预测的错误(应用申请内存失败会导致一系列问题);而对于可压缩资源,比如 CPU 时间片,即使应用使用的 CPU 资源很多,应用使用也可以按照权重分配给所有 应用使用,虽然每个人使用的时间片减少,但不会影响程序的逻辑。