我们在时间是个什么东西?说过,时间和它的相关量速度,是制造虚拟感觉的途径之一;在这里,我想说的是,当考虑粒度时,也是制造虚拟感觉的途径之一。

考虑这么一个例子:

  1. gmail
    gmail号称每人均有1G的邮箱,那么真的是google提供了1G*50亿这么大的磁盘空间么?
  2. 你只有100元,而同时又10个人要向你申请经费,如果让每个人感觉自己均可使用100元呢?
    • 如果每个人申请的粒度是1元,每次申请5个粒度,每个粒度使用1s
    • 100元就被划分成了100/1=100份;
    • 因为是有10个人,所以在1s内,总共占用了5*1*1*10=50元
    • 系统还剩50元
    • 所以在1s这么一个范围内,告诉这10个人,每个人都可使用100元是完全可以的,因为它们资金流动速度达不到100元/s
  3. 问题2其实和computer中的processes共享physical memory类似
    即每个processes都觉得自己拥有4G的内存,因为它们是以32位的宽度来访问内存的;
    但其实这仅是一种感觉而已,每台机器也许仅有2G的物理内存;
    但要注意到一点,就是每个process申请内存的最小单位是4K,也就是说4K是它的粒度。如果粒度是2G,那么一个process一次申请就消耗内存完毕;再如果每次申请要占用较长时间,比如5分钟,那么该类系统就容易露馅了。

note:

  1. 在上述第2点当中,我们假设每个人每次申请粒度和占用时间是一样的,这是最simple的情况;实际生活中,有比这要复杂一些的例子。假设有三人A,B和C,他们的习惯如下:
    • A每次申请100个粒度,每个粒度使用1s
    • B每次申请50个粒度,每个粒度使用2s,申请2次
    • C每次申请50个粒度,每个粒度使用3s,申请2次

    那么最坏的情况是在1s+2*2s+2*3s=11s的范围内,每个人都可以使用这100元一次;以11s为周期,就用100元同时满足了ABC三人的要求。而在下图的情况下,则仅需9s;也就是在9s的周期内,用100元同时满足了ABC三人的要求。

    image

  2. 以上假设ABC仅仅消耗RMB这种资源,如果ABC消耗的资源可以用某种其他资源代替,那么问题就变得更加有挑战性。
    我们称ABC为消费方,贷给他们资源的称为提供方
    那么在资源可以替换的前提下,如果提供方的资源转换速度是以ms或更小单位来运转的话,还能对ABC提供更多的满足。

Advertisements