打字猴:1.70049698e+09
1700496980
1700496981 2010年的夏天,和许多家长一样,吉姆·格蒂斯经常接到孩子们的抱怨,说家庭无线网络运行缓慢。不过,与大多数家长不同的是,盖茨已经在惠普、阿尔卡特朗讯、万维网联盟和互联网工程专责小组工作。他在1999年是现在仍在使用的超文本传输协议规定的编辑。因此,就像大多数善于钻研的父亲可能都会研究这个问题,格蒂斯也对此进行了调查。
1700496982
1700496983 格蒂斯用网络术语向一屋子的谷歌工程师表达了一种迫切而明确的信念:
1700496984
1700496985 我碰巧正在这条从我家到麻省理工学院10毫秒长的小路上,复制或加密异地备份旧的X财团的档案。在复制文件的同时,网络性能监视报告延时平均超过1秒,以及有坏包丢失。我选了网络封包分析,还有一些非常奇怪的行为出现……这看起来不像我期望的传输控制协议(锯齿形)。它不应该那样发生。
1700496986
1700496987 用简单的英语来说,他看到了一些东西……非常奇怪的东西。俗话说:“在科学中听到的最激动人心的一句话,就是预示着新发现的那句话,不是‘有了!’而是‘很有趣’。”刚开始,格蒂斯认为他的电缆调制解调器有问题。他的家人在互联网上所称的问题,就像他们自己的墙上插座里出现的交通堵塞。本该去往波士顿的数据包没有被卡在途中,他们被困在了家里。
1700496988
1700496989 但是当格蒂斯研究得越深,他就越为之担心。这个问题影响的并不仅仅是他家的路由器和调制解调器,而是所有家庭的路由器和调制解调器。问题不只是在网络上,而是在电脑本身、台式机、笔记本电脑、平板电脑和智能手机上,交织在Linux、Windows和OSX等操作系统上。它也不只是出现在终端用户的硬件上,它还触及了互联网本身的基础设施。格蒂斯与康卡斯特、威瑞森、思科和谷歌的核心人物一起共进午餐,其中还包括范·雅各布森和温顿·瑟夫,并开始慢慢将拼图拼出。
1700496990
1700496991 问题无处不在。问题就是缓冲膨胀。
1700496992
1700496993 缓冲区实际上是一个队列,它的作用是消除突发事件。如果你和另一个顾客差不多同时走进一家甜甜圈店,暂时过于忙碌的收银员并不会让你先离开这家商店,下次再来。当然,客户不会这样做,但管理者也不会:这样的政策肯定是没有充分利用收银员的作用。将客户放在队列中,可以确保存储的平均吞吐量接近其最大吞吐量。这是一件好事。
1700496994
1700496995 然而,这种良好的资源利用率带来了一种非常实际的代价——延迟。当汤姆带他的女儿去伯克利时,她的心全在一个巧克力香蕉可丽饼上,于是他们就排队等着去买。最终(20分钟后)汤姆走到队伍的最前面,点了单。但在付完钱之后,他们还要再等40分钟才能真正得到可丽饼。(就像吉姆·格蒂斯一样,汤姆很快发现自己有大量家庭投诉。)接受订单的时间比做可丽饼的时间要少,因此排队订购仅仅是问题的第一部分。但至少这个队伍是可见的,客户知道他们等的目的是什么。第二部分的等待,这里更长的队伍是看不见的。所以在这种情况下,如果可丽饼柜台在某一时刻切断了等待的队伍,并竖起了一个告示说,他们不再接受订单,那么这将是一个更愉快的结果。把顾客赶走可以让每个人都过得更好——无论是让可丽饼队伍更短,还是在别的地方。这样一来,可丽饼柜台本不会有一分钱的销售损失,因为不管他们的顾客等待多久,他们一天只能卖出一定数量的可丽饼。
1700496996
1700496997 这正是吉姆·格蒂斯在他的家庭电缆调制解调器中观察到的现象。因为他上传了一个文件,电脑就向调制解调器发送可以处理的尽可能多的上游数据包。而调制解调器假装可以处理的量比实际能处理的量要多得多,在建立一个庞大的等待队列时,它没有拒绝任何一个数据包。因此,当格蒂斯试图在访问网页或查看电子邮件的同时下载某样东西时,他的确认字符数据包就会被卡在上传后,不得不在调制解调器上排队等待离开。因为他的确认字符会永远返回到网络和电子邮件服务器上,服务器会将它们自己的下游连接速度限制为类似爬行的速度。
1700496998
1700496999 这就像每次你说“啊哈”的时候,它就会被延迟10~20秒。说话者就会慢下来,以为你不理解他们,对此你无能为力。
1700497000
1700497001 当一个网络缓冲区被填满时,通常会发生“尾部丢弃”:这是一种不礼貌的说法,即每一个在某一点之后到达的数据包都被简单地拒绝了,并且被有效地删除了。(一旦排队时间过长,新客户就会离开可丽饼柜台,这是人类环境下的一个“尾巴”的版本。)考虑到包交换的邮政隐喻,想象一个邮递公司每天早上会把所有运送卡车装不下的包裹都扔掉,这看起来有点儿奇怪。然而,正是这种“信息包的丢弃”让计算机注意到它的一个数据包没有被确认,这促使和式增加积式减少算法开始将带宽速度减半。数据包丢弃是互联网的主要反馈机制。巨大的缓冲区(不管你的厨房多么缺少人手你都接受所有订单,不管需要多长的等待时间,调制解调器都接收每一个到来的数据包)这可以防止这种调控的发生。
1700497002
1700497003 从根本上说,缓冲区使用延迟,在网络中称为“延时”(latency),以最大限度提高吞吐量。也就是说,它们会导致数据包(或客户)的等待,以利用之后事情进展较缓慢的时期。但是一个永久运行的缓冲区会让你的两个世界都遇到最糟糕的遭遇:所有的延迟,以及没有一个给予。如果平均来说,你的清除速度可以跟得上数据爆炸出现的速度,那么清除数据爆炸是件好事,但是,如果你的平均工作量超过了你的平均工作效率,那么没有任何缓冲区可以创造奇迹。缓冲区越大,在你发出求救信号前,你就会落得越远。缓冲区的基本原理之一就是,对于数据包或用户来说,它们只在障碍都常规地被清除时才能正确工作。
1700497004
1700497005 几十年来,计算机内存都非常昂贵,根本没有理由用不必要的内存容量来构建调制解调器。因此,对于调制解调器来说,没有任何方法可以组建一个比它所能处理的能力更大的等待队列。但在某种程度上,由于计算机行业的规模经济极大地降低了内存的成本,现代制造商开始给他们的机器提供千兆字节的内存,因为这实际上是他们所能得到的最小的内存。结果,在调制解调器、路由器、笔记本电脑、智能手机以及互联网的主干网中,无处不在的设备缓冲区都变成几千倍大,在像吉姆·格蒂斯这样的人发出警报来做一些事情之前,他们已经变得太大了。
1700497006
1700497007
1700497008
1700497009
1700497010 算法之美:指导工作与生活的算法 [:1700494197]
1700497011 算法之美:指导工作与生活的算法 迟到不如永远不到
1700497012
1700497013 阿齐兹·安萨里
1700497014
1700497015 把你最基本的问题当作一个人来处理。有人喜欢你,但你不喜欢他们。这一度是一种尴尬的局面。你必须要进行一次谈话,这很奇怪。现在你该怎么办?有人喜欢你,你不喜欢他们怎么办?你只是假装很忙……直到永远。
1700497016
1700497017 《蛇宗三字经》
1700497018
1700497019 永远不到比迟到好。尽管永远得不到经常比现在的状况好。
1700497020
1700497021 歌手凯蒂·佩里在推特上的粉丝比她的家乡加州的人多了107%。她作为推特上最受关注的人,自2016年年初起,她的粉丝数量有8120万。这意味着即使有99%的粉丝从来不给她发信息,或者即使那1%的人每年只给她发一次信息,她也会每天收到2225条信息。注意,是每一天。
1700497022
1700497023 想象一下,如果佩里会按照收到的时间先后顺序来回复粉丝的每一条信息。如果她每天能回复100条信息,那么粉丝可能的等待时间很快就会用几十年来计算。可以想象,大多数粉丝会更喜欢立即得到一个简短的回复,而不是在10年或20年后确定能收到的回复。
1700497024
1700497025 请注意,当佩里在离开会场时遇到等她签名,说想听她说些话的歌迷时,她并不会遇到这个问题。佩里做了她能做的,继续前进,失去的机会就消失了。身体是自己的流量控制。我们不能同时存在于两个地方。在一个拥挤的聚会上,我们不可避免地只能参与不到5%的谈话,也不能后期阅读或补上错过的内容。失去视网膜的光子不会排队等待日后重见光明。在现实生活中,数据包的损失几乎是失去所有。
1700497026
1700497027 我们用的“丢球”这个词,几乎完全是贬义的,意味着这个人懒惰、自满或者健忘。但是,战术性的丢球是在超负荷的情况下完成任务的关键部分。
1700497028
1700497029 对现代通信最普遍的批评是,我们“总是处于连接状态”。但问题并不是我们总是连接着的:我们并没有。问题是我们总是在缓冲中。这两者的区别是巨大的。
[ 上一页 ]  [ :1.70049698e+09 ]  [ 下一页 ]