2019-03-16

关于锁的一点想法

考虑namenode或者某种rpc service队列.

假设有k个处理线程,每个请求处理时间是r的话.
则有t时间内的throughput T=k*r.

如果每个请求会收到一个global/share lock或者之类的互斥影响的话.
那么单个请求的开销r应该增加一个extra cost c.
即T=k*(r+c).

对于锁竞争之类的,cost c通常不会是一个常数.
考虑存在一个概率p能描述这个dynamic的话.
即c=p(c)

则每个请求的开销为r+p(c).
考虑有n个请求的话,那么在并行k的情况下.
每个线程处理m_i个请求,则该线程处理时长为\sum_{m_i} r+p(c).
->
cost of thread m_i = r*m_i + \sum p(c).

其中有n=\sum_k m_i即所有线程的处理请求总数加和为n.

当each m_i sufficient large的情况下,
cost of thread m_i ~ r*m_i + m_i*mean(p(c)).
即竞争带来的dynamic cost趋向于它的期望.

考虑线程处理是work stealing的策略的话.
那么并行带来的处理时长应该是每条线程差不多.

因为考虑只有两条线程的情况.
其中a跑了一个task,那么另外一条b要么跑comparable的task,要么lighter,或者heavier.
如果是lither的话,那么b将先完成,并抢先执行下一个.
这时等价于将a的当前task的cost减去b的task的开销,重置回假设初始.
而如若是heavier的话,交换a b即可.

对于k>=2的情况可以将划分为logical两条线程divide and conquer.

于是在这种情况下每条线程都是equality comparable cost的.
而任意一条在m_i sufficient large的情况下有
cost=r*m_i + m_i*mean(p(c))
->
per request cost=r+mean(p(c))

在p(c) dominate r的情况下.
比如在lock contention的情况下,process cost << wait lock. 实际请求开销小于锁竞争的情况下. 那么throuthput ~ mean(p(c))的. 那么考虑p的实际分布可能的形式. 以读写锁为例. 请求require read lock的概率为p,write lock的概率为1-p. 有k个线程竞争. 则,request read lock的情况. 当,all read lock的概率为p^k 因为shareable,所以cost=(p^k)*0 = 0 at least one write lock的概率为1-p^k. 如果获得锁,则有cost=0. 未获得锁的话,存在另外一个描述lcurrl,lock cost under read request lose. 即cost=(1-p^k) * (lcurrl) 请求为write lock的情况下,且获得的情况不论概率,其cost为零. 获取失败的情况下,存在yet another描述,lcuwrl,lock cost under write request lose. 那么mean cost=(p) * ((1-p^k) * (lcurrl)) + (1-p)*lcuwrl. ->lcurrl*p - lcurrl*p^(k+1) + lcuwrl - p*lcuwrl
->(lcurrl-lcuwrl)*p + lcuwrl - lcurrl*p^(k+1)

由于lcurrl和lcuwrl都是在给定p下的某个分布的mean值.
所以对于给定的p,有
(lcurrl-lcuwrl)*p + lcuwrl - lcurrl*p^(k+1)
->
mean cost = a*p^(k+1) + b
其中,a>0,1>=p>=0,k>0,b>0

当p->0的时候,或者k越来越大的话,mean cost -> b -> lcuwrl.
即lock cost under write request lose.
也即写锁竞争失败之后的expected cost.

如果锁是fair的.
那么设计上来说,每个线程得到的几率都是对等的.
于是随着k的增加,lcuwrl也会相应增加.
因为稀释.

而如果是non-fair的,则依赖于具体实现了.

2019-03-12

快消社会

今天看到条消息,是F5收购Nginx.
这好像已经不知道是第几个知名重要的开源软件最终被收编的故事了.

也不能说被收编之后nginx会怎么样.
只是总有种一个时代过去了的感觉.

想到月底Google+也要关闭了.
可能有点什么能说的.

哀叹互联网从开放进取到现在的逐渐封闭,似乎也是个没什么太有意义的话题.
不过难免的总会有一点凄凉感.

互联网能走到今天,大概也是因为这种开放的唾手可得感.
开始的信息都是只有你想不想获取,大抵是没有获取不到的.

至少相对于今天的各种paywall和不可索引/内网黑洞来说,是几乎没有什么门槛的.

而现在,不论是国内外,都趋向于各种封闭不可或者难以延伸的圈子.
或者说用户很难自我发现的一个状况.

前段时间,reddit上有个culture war subreddit关闭的事情.

大概背景就是,这个subreddit如其名,可能是有各种比较激进或者非主流甚至有些反社会的内容.
里面会有一些和平非和平理性非理性的讨论.
维护者称之为national conversation.
大概可以称之为一种比较真正意义上的公开性的讨论.

一方面是因为troll,一个社区庞大之后的无可避免的被无法融合的外来文化冲突.
另一方面是作者自身的一些反思.

也就是moderate的一切正确性/正义性.

用一种可能比较容易理解的话来说就是审查/审核的边界线.

社区维护者或者更泛化地来说,每个人都有自己各自的立场和观点.
那么在判断一个东西是否普适或者符合某种社会道德规范的标准也就实质上的因人而异.

所以什么内容是对什么内容是错,这个本身就不太可能有一个完美的解释.

在这种情况下的审核或者说过滤就天生地容易引发内容之外的矛盾冲突.

有时候就是所谓的网络暴力.

这就是说,在开放性的同时,本身对于一部分人来说,这就是错的.

或者说,开放性的最后演化方向可能几乎必然是走向封闭.
或者说失败的.
因为开放并不代表着能包容全部,以及被任意包容.

Google+当初是个很有意思的几乎是社会实验性质的设计.
它的input/output信息流都是用户可以控制的.

有点类似今天的朋友圈,你可以选择只看哪些人的信息流,也可以控制你的信息流能被哪些人看见.
最关键的是,这两点都是高度自由可选的.

但是这种技术或者说产品设计上的优越性并没有让Google+成为一个成功的产品.
甚至于某种程度上因此失败的原因.

Google最初被人诟病的理由之一跟buzz类似,是过于结合Gmail/Google产品,使人没有一种社交安全感.

这是一个技术和人性的冲突性伪命题.
因为本质上来说,用户对信息流的流向是完全可控的.

但是依然令人不安的原因根本上来说并不在于能不能控制信息流向.
而在于这些信息被人看到后其他人的反应符不符合自身的预期.

也就是说,这种不安感实际上来自于那种对不预期结果的不可撤回干涉性.

这就像有些聊天工具的撤回功能一样.
本质上来说,它并会改变别人已经看到接收的事实.
但是,因为可撤销性给予了一种可挽回可弥补不预期结果的一种可能性.

尽管很多时候是一种假性安慰.

因此对于大多数人来说,这并不会让人觉得Google+的这种设计有安全感.
也自然不太可能有大而普遍的UGC产生.

这是关于outbound的一方面.

另一方面是所谓的鬼城问题.

实际上,Google+可能有些不算小的活跃圈子.
知道的可能就是一些ACG内容的.

里面会有一些很紧密的闭合关系.
而且由于Google+本身的circle的设计,可能会有二层或者三层的private circle存在.

类比的话就类似微信或者其他IM的群组功能.
在基于组员clsoed对外不可见的情况.

这在某种程度上印证了开放社会是不太可能长久存在的.

因为这些private circle的存在或者说建立的理由大致有几个.
一个是回避杜绝某些话题.
一个是基于封闭关系链的安全感.
一个是某种程度的优越性集体意识.

这些是一种有意识的分裂且不太可逆的过程.
加上echo chamber的作用,除了本身内部存在矛盾分裂的时候,是很少会出现在开放空间的.

所以,像Google+这种社会实验表明,大体上来说,开放空间本身是不太可能存在的.
因为其反人性的一些问题.

而像culture war的问题则说明,即便有幸地在某个阶段能沉淀出一个比较合适的社区共识.
但是维持这种共识的不变性和健康性也是一个未知数.

这点也是很多BBS走向衰落的一个因素.

对于那些相对长青的社区来说,无一例外地算是有很好的某种程度的文化传承.
一个例子就是S1.

一个可能不太好但却从另一个层面说明问题的可能就是知乎.
尤以谢邀之类梗为重.

它反映的对外的stereotype,某种程度上是来源于社区理受相当部分用户欢迎和关注的内容.
也即是一种用户文化的传承或者说侵略对抗的结果.

一个社区的存在,在这个层面上来说,是依赖于主要用户的一种文化气质的.

也即是说,一个社会的氛围形式是如何,相当程度上是受之中的大多数人所左右形成的.

那么,回到互联网的封闭倾向问题上来说.
可能也是基于同样的理由.

RSS类开放社会的消亡,开源软件的商业化服务化,software infrastructure的便利化黑盒化.
可能都算是一种自然选择.

毕竟,可能快消社会?

聊聊卡布里尼

最近看了部片叫卡布里尼,算是可能这段时间来比较有意思的一部电影. 故事也不算复杂,就是一个意大利修女去美国传教,建立慈善性质医院的故事. 某种程度上来说,也很一般的西方普世价值主旋律. 但是如果换一套叙事手法,比如共产国际的社会主义革命建立无产阶级广厦千万间的角度来看的话,也不是...