原文:The technology to make ‘Silicon Valley’s’ decentralized ‘new internet’ already exists( http://mashable.com/2017/04/24/is-silicon-valley-new-internet-possible-or-not/#6cEY_p263PqN ) 作者:RAYMOND WONG 时间:APR 25, 2017 “给你无限的时间和资源,你想用你的压缩算法做出什么都行……什么都行,说出来是什么,3,2,1……说!”美剧《硅谷第四季》中的“变态”亿万富翁Russ Hanneman对主角Richard Hendricks喊道。 “一个全新的互联网”,可爱的程序猿Richard说。 “我们曾用一台掌上电脑的计算能力把一个人放在月球上”,Richard继续说道,“我们现在手机上的计算能力要比那强几十万倍,但这些手机却都只是躺在口袋里什么都不做。所以我想到这个,有数十亿的手机在世界各地拥有相同的计算能力,只是闲在人们的口袋里。“ “然后我想,如果我们使用这些手机来构建一个庞大的网络呢?使用我的压缩算法来使一切数据变得很小,高效,到处传播。如果我们能做到这一点,我们可以建立一个完全去中心化的网络,那将是没有防火墙,没有收费,没有政府监管,没有间谍的互联网。信息因此在各种意义下都将是完全自由的。“ Russ不仅喜欢这个看似疯狂的想法,还答应投资。Russ还分解了Richard的数据压缩初创公司Pied Piper,迫使他退出,以便让他弄清楚如何将“新互联网”变成现实。 “我不知道是否可行”,Richard承认,“我还没有仔细去想过。” 这正是观看剧集的粉丝们一直想知道的, Richard的“新互联网”到底是真的可能呢,还是只是电视上编造的? 当今的互联网是去中心化和中心化的混合体。 任何人都可以创建一个去中心化的点对点(P2P)网络,让设备间直接连接,比如BitTorrent。同时,任何人也可以去创建一个中心式网络,通过服务器传递数据,多数大型在线服务都是如此,如Google,Facebook和Twitter。 加密的、去中心化的网络的好处是显而易见的:安全性和隐私性。 由于数据在分散的网络节点上存储和传递,没有任何在线服务或者政府可以在你不知情的情况下窥探你的数据。 Mesh Network 理论上,可以有几种方式来构建这个“新互联网”。 第一个是Mesh Network(网状网络),它是由任意数量的设备或节点组成,数据在节点之间传递。手机应用Firechat是使用mesh network的完美示例,它通过蓝牙让手机间相互连接。 事实上,一些狂热的reddit用户在《硅谷》下一集的预告视频中Richard的白板涂鸦上发现了一些线索,表明剧中他至少考虑了mesh network。使用mesh network并依赖蓝牙等无线协议的缺点当然是较小的覆盖范围和较慢的传输速度。你的设备与其他设备的连接质量要取决于各个设备的蓝牙规格。虽然你可以通过你和你要连接的设备的路径中间有其他节点“中继”来解决这个问题,但并无法保证每次都有中间节点。 另一方面,蓝牙4.0只有200英尺的范围,蓝牙5.0的新设备也能达到800英尺。此外,蓝牙5.0将带宽从4.0的25Mbps提高到50Mbps。虽然不如千兆的Wi-Fi或LTE,但嘿,隐私和安全更比速度更重要,对吧? 也就是说,剧中Richard的能“使一切都变小,高效”的超级强大的压缩算法,将是使mesh network成为可能的特殊要素。 Maidsafe & Storj Richard实现他宏伟计划的另一种可行方式,是像Maidsafe的SAFE网络或Storj的P2P网络。虽然它们仅用于去中心化的文件存储,但我并不认为像Richard那样的代码狂人无法调整这些结构。SAFE网络自称为“新的去中心化互联网”,很大程度上承诺了Richard的想法,只不过它没有使用闲置的手机计算资源,而是使用的PC。 根据该公司的说明,用户可以无须验证地创建一个帐户,然后决定贡献分配给SAFE网络的空间。 然后,Maidsafe会向贡献存储空间的用户支付“Safecoins”(一种具有真实市场价值的加密虚拟货币)。用户向“vault”贡献越多的存储空间,就会得到越多的Safecoins。Maidsafe以此来进一步激励用户加入SAFE网络。 在文件被上传之前,它被先被加密,然后分解成较小的数据包并分散到网络中去。数据存储是存在冗余的,并且在计算机打开时,文件会在网络上自主移动。简单说,“新互联网”上所有的数据都是分块、加密存储在所有设备上的。在网络上所有设备上的碎片加密件中。 当你需要访问自己的数据时,只需从其他设备下载各部分就可以了,这基本上就和BitTorrent一样了。 SAFE网络现在只是在进行alpha测试,但是更接近公开发布。 虽然它只适用于Windows/Mac/Linux,但公司未来也会考虑移动平台。去年在TechCrunch上,Maidsafe创始人David […]

上次提到了Steam通过差异化的游戏定价和频繁的打折活动,力图让最多的人以自己能接受的最高价格买走一个游戏,以此来走了最多的钱。本节我们将继续说一下集换式卡牌和社区市场这两种吸钱大法。 集换式卡牌 摘自百度百科 集换式卡牌游戏,简称CCG(Collectible card game)或TCG(Trading card game)。顾名思义,此类游戏是以收集卡牌为基础的,游戏者需要通过购买随机包装的补充包,收集卡牌,然后根据自己的策略,灵活使用不同的卡牌去构组符合规则的套牌,进行游戏。由于各人的套牌都不同,每一局抓到卡牌的次序也有不同,无穷无尽的变化由此而起。无论是准备及进行游戏的过程中,都需要玩家不断开动脑筋去思考。一般的说,这些卡牌都有一定的价值,玩家之间可以交易交换自己的卡牌。 集换式卡牌游戏线上或线下都有,不过最开始是从线下游戏发展来的,大家一定听过甚至玩过游戏王,游戏王就是典型的线下集换式卡牌游戏,在Jc小时候,游戏王可是在我们当地的小学生中风靡一时。游戏王的卡牌种类特别多,要命的是每次买卡包里面的卡都是随机的,所以要凑齐所有的卡,只能多买卡包,或者和别人换卡,厉害的卡总是很少的,而垃圾卡总是一堆堆重复,收集全很难。这也导致虽然集换式卡牌和其他卡牌游戏一样可以打牌对战,最后双方可以争个胜负,但很多人的乐趣更多在于收集卡牌。 Steam的集换式卡牌就完全抓住了部分人爱好收集卡片的心理,卡牌完全没有对战的功能,只有“集”和“换”。Steam中的卡牌是一种虚拟卡牌,也就是每张卡牌只是在你的Steam道具包中占去一个格子,产出的途径是玩游戏,任何玩家在刚买的游戏中玩几个小时就可以产出对应游戏内容的几张卡牌,同时产出的卡牌的数量和种类肯定是少于这款游戏总共可以产出的卡牌种类。于是,如果你想收集某一款游戏对应的整套卡牌,只能去Steam社区市场进行交易得到。当你收集到某一整套卡牌,就可以得到徽章、表情、背景和优惠卷等各种虚拟荣誉和优惠。 这样,我们可以分析出如下几点结论: 1. Steam集换式卡牌将实体集换式卡牌的买卡包的过程转换为花时间进行游戏,这便可以促使更多人去将时间花在Steam中,同时由于卡牌可以在社区市场中出售换“钱”,增加用户的满意度。 2. 借助Steam自带的社区市场可以进行卡牌的买卖,模拟了实体集换式卡牌的卡牌交易活动,这样,卡牌也成为下文所述的Steam社区市场的商品种类之一,Steam又可以通过社区市场的交易税,赚一上波。 3. 集齐某套卡牌后会获得各种虚拟荣誉或者优惠,为收集爱好者提供更大的收集动力。 我们可以看到,Steam集换式卡牌像是游戏外的游戏,即使你打开了Steam后没有打开任何游戏,你也可以点开Steam道具箱,来欣赏下自己所收藏的一张张可爱的、看得见摸不着的、同时却有标价的卡牌。 社区市场 Steam本身就是一个游戏交易的平台,怎么又冒出来一个社区市场,这是个什么玩意儿?其实,社区市场是供Steam用户之间交易的,玩家可以在Steam平台的游戏中获得各种游戏道具,很多道具都是支持在社区市场中进行买卖的。这个平台既为玩家之间游戏外的道具交易提供了便利和安全保证,又让Steam吸钱吸的更爽,大家都是很开心的。 虚拟商品从哪来 首先,上节所述的集换式卡牌便是虚拟商品之一,产出途径是玩家的游戏时间。 其次,各种游戏都有相应爆出可交易道具的机制。比如,CS:GO可以买钥匙开箱子,钥匙16RMB一把,开到了垃圾皮肤只能卖几毛钱,如果开到了匕首的皮肤(很稀有)就可以在社区市场卖上上千块,就问你开还是不开,如果没有开到匕首,还开不开下一个?再如,Don’t Starve Together中,玩一段时间就可能会随机送一件可交易衣服,这和卡牌类似,相当于也是用游戏时间换来的。 可以看到,类似CS:GO的抽奖机制,很多网络游戏都有,这可是利用人们侥幸心理的吸钱大法;类似Don’t Starve Together或集换式卡牌,用户越长时间在Steam进行游戏就可以吸引更多的新用户来Steam消费。 高效的交易方式 穷屌丝Jc是个穷屌,但是依旧怀揣着走上人生巅峰的梦想,于是曾拿着仅有的1000元人民币去闯大牛市,最后亏到只剩900再也不敢去赌运气了。后来Jc发现,Steam的社区市场的交易方式就和股市的交易是类似: 首先,在交易平台中,卖家和买家都可以报价的撮合式交易,这就会最终导致:卖家的最低报价应该是略低于买家的最高报价的,当某个卖家或买家报价后发生了买卖报价相等于的情况,交易便发生了,这也会导致商品价格的变动。这种交易方式买卖双方都可以了解事实供需和价格的变动,高效便捷,价格一般也总是符合当前的实际供求关系的。 Steam也是要收交易税的,税额是5%,所以没进行一笔交易,便相当于Steam“销毁了”了5%的Steam货币,但是货币被销毁Steam就不赚钱了吗?其实正是由于虚拟货币被销毁了,才会导致人们用更多的真实货币兑换成Steam虚拟货币余额,也就是说Steam的交易税,真的被Steam赚到了。 社区市场也为玩家交易提供了便利。而且,有了类似股市的社区市场,玩家也是可以像股市一样低买高卖来赚钱的,这和股市很类似,需要玩家审时度势,观察某个道具的产出因素的变化,判断道具未来的供求。但是最后获益的,肯定少不了社区市场的实际控制者Steam。 结论 通过以上两节的分析,我不得不佩服,Steam不仅仅是游戏销售平台,其本身就是一个所有用户参与的网络游戏,通过虚拟货币、虚拟道具和虚拟市场让用户间相互产生联系、让游戏间产生联系也让游戏和Steam平台产生联系,进而让更多的用户愿意花更多的时间、更多的金钱到这个平台中来,并且无法自拔。 参考 [1] Steam社区市场, http://steamcommunity.com/market/ [2] Steam官网, http://store.steampowered.com/ [3] 撮合交易, http://baike.baidu.com/link?url=whjmRJd1J2UkFyVlullmuSd-bM1MfxAZSMvKxcXcfprfHbP7w6k89qwWlZWXx4ajkcetefQ5d1vDkdxI5AoGHxnW1RSXGecnqZCey3a2ybmKSwRgAX0U9h9uxtamEKPp [4] 《虚拟经济学》, https://book.douban.com/subject/26418114/

首先,我认为这个问题应该从商业运营或经济学的角度来更加专业地解释,但作为一个资深的、从小就被各种电脑游戏坑钱的低端手残玩家,我还是要揭漏出steam的部分坑钱之道,以方便我们更好地被坑。非常希望各位有兴趣和相关专业的同学来和我讨论啊~ 什么是Steam 摘自百度百科: Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一款全球最大的综合性数字发行平台。玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。 其实可以简单理解为类似iPhone的app store的平台,只不过app store是卖手机应用的,而steam是卖电脑游戏的。但是Steam的吸钱手段真是了得,本次先谈一下我对游戏定价的一些理解~~后续还可能会介绍下Steam的社区市场、集换式卡牌、DLC/Workshop等吸钱大法。。。 游戏定价 steam作为一个游戏销售的平台,采取了和苹果app store类似的模式,从游戏商的收入直接抽成。 有意思的是,和app store一样,steam游戏商店也根据国家和地区分了很多区。同样的一款游戏,在不同的区购买价格是不同的。在 steamdb.info 这个网站可以查看当前某款游戏再各个国家的价格,我们可以找几款游戏观察一下:比如同样是CS:GO这个游戏,当前欧洲区要10.65美元,美国要10.04美元,香港区要8.5美元,而中国区只要4.7美元;再看H1Z1: Just Survive这个游戏,欧洲区同样最高11.35美元,中国区5美元,印度区最低只要4.37美元;Don’t Starve这个游戏,欧洲区最高的4.25美元和最便宜的中国区的0.88美元形成了鲜明对比。 个人认为,基于以下几点事实,这种现象就是可以理解的: 不同的地区的税收情况是不同的。 不同的地区的人们的版权意识或消费水平是不同的。 由于电脑游戏卖的是使用权或者说是拷贝,多卖出一份所带来的生产成本几乎为零。 基于第一点事实,不同的税率导致了如果steam想要在不同的地区获得相同的利润,就要在税率高的地方提高销售价格,比如在澳大利亚卖游戏就有高昂的税负,所以澳洲区的游戏价格相对较高。 基于后两点事实,既然生产的成本是一次性的,卖的是拷贝,那么最赚钱的方式一定是以人们心目中能借接收的最高价格卖出去,所以中国印度等发展中国家就得到了福利,欧洲美帝人民消费水平高也能接受的了较高定价。所以最后,没错,大家都高高兴兴的买了游戏去玩游戏了~steam钱顺利地吸走了最多的钱。 日常打折 是的,如果你曾经下载过steam,估计注册完账号刚登陆进去就会遇到一个大惊喜:你赶上了steam的打折!好巧啊~哇塞还是5折!是不是觉得捡到了大便宜,赶紧买一波吧~ 如果你多观察一段时间,你会发现,steam经常打折,打折分发行商打折、周中打折等日常打折,还有每年几次的大型优惠,比如黑色星期五、和现在进行的“夏日优惠”这种集中的坑钱活动。Steam真可谓打折不断,说到这里,你以为了解了这个事实就能控制住你伸向钱包宝的手吗?当然不是。。,动不动就来个7.5折、9折什么的,原价100多现在只要10几块,就问你到底买不买,于是你买了。 但Steam当然也不会因此赔本,还是基于上节的第3条事实分析,卖游戏拷贝和使用权是没有成本的,所以卖0.1元,Steam都是赚的。如果说上节所说的分区进行差异化定价可以让不同消费水平的地区的人民都把钱交给Steam,那么这种经常性的打折就可以把我等穷屌丝和高富帅马上用赤果果的金钱区分出来啊。。。 我们可以设想:高富帅小明看到了一款的射击游戏,一看价格才150块,想都没想就买了,毕竟买了马上就可以下载来玩;同一国度还住着穷屌丝jc,他看了同一款射击游戏,晃着存钱罐里的两个一块的钢镚,望着去年他妈给发的88块的微信红包,只能将这款他心目中的价值150块的史诗级巨作拉进心愿单。某天周三,穷屌丝jc突然发现这款游戏降价到了16块,于是,他望着剩下的35块的支付宝余额,怀揣着与高富帅小明同台竞技的梦想,爽快的买下了这款”史诗级”射击游戏。 哈哈,和上节说的类似,如果steam很少打折,把这款史诗级游戏定价为16,那么小明和jc都买了,Steam可能只赚了32元,或许小明还会不屑于玩如此廉价的游戏,Steam只赚了16元;如果一直定价为150,那么可能最后只有小明交出了150元;而在我们假设的情况中,steam赚了166。钱吸的漂亮!~ 参考 [1] http://www.pcgamer.com/the-weird-ecomomics-behind-steam-prices-around-the-world/ [2] https://steamdb.info/ [3] 《虚拟经济学》, https://book.douban.com/subject/26418114/ [4] Steam官网, http://store.steampowered.com/

论文原文PDF: sRoute: treating the Storage Stack Like a Network 出处:USENIX FAST 16 1. 概述 数据中心中,数据从一个应用最终到达存储服务器不仅要经过网络,还要经过很多的存储层次,这些层次可以称为存储栈(Storage stack)。对于数据中心中一个较为复杂的应用,一个IO请求甚至要经过应用缓存层、虚拟机操作系统(Guest OS)文件系统页高速缓存、Guest OS文件系统、Guest OS IO调度层、Guest OS块缓存、Guest OS块设备驱动、虚拟机管理器、宿主机操作系统(Host OS)网络驱动、缓存服务器、远程存储服务器缓存、远程存储服务器文件系统、远程存储服务器物理磁盘等多达十几层的存储阶段(Stage)。 而一般IO经过这些stage最终到达终点的路径是预先制定好的,这条路缺乏灵活性(hard-coded),即使仅想改变其中的某个stage,实际更改的时候也可能会涉及到这个stage之上和之下的多个stage。 本文仿照软件定义网络(SDN)的思想,提出了一种软件定义存储的架构sRoute,从原始的数据中心存储中心抽象出数据平面和控制平面,控制平面上的中心化controller随时可以对数据平面上的存储交换机sSwitchs安装“转发规则”,来实时控制IO路径。这样,就实现了包括改变终点、改变中间路径和将点对点路径散布为一点对多点在内的三种基本IO路径更改方法。 2. 整体设计 2.1. 数据平面和sSwitch 数据平面包括原有IO栈的各个stage和本文新加入的特殊stage sSwitch。sSwitch可以插入到IO路径的中任意的stage中,其根据当前的”IO转发规则”对IO进行转发。具体的,sSwitch会检测每个IO请求的header,根据header中包含的IO源点和目的点信息来和当前sSwtich所存的”IO转发规则”进行匹配,然后根据对应规则进行转发。 例1 把所有从VM~1~中到服务器S~1~文件X的读请求都路由到S~2~文件Y,那么VM~1~和S~2~之间的任意一个sSwitch的转发规则可以这样表示:

例子 以打印一个蓝色斜体的”hello, world“为例: C printf(“\033[3;34mhello, world\033[0m\n”); python print “\033[3;34mhello, world\033[0m” Shell echo -e ‘\033[3;34mhello, world\033[0m’ 格式 \033[Para0{;Para1…}mYOUR_TEXT\033[0m \033[Para0{;Para1…}m 表示转义开始 *033[0m 作为转义结束 Para0(1,2…) 参数可以为多个,比如上述例子*,3表示为斜体,34表示蓝色 YOUR_TEXT 在例子中就是hello, world 参数 Linux中通过man console_codes命令可查看详细的参数描述*这里写一下常用的格式和颜色: 常用格式: 参数代码 描述 0 重置所有格式 1 粗体(高亮) 2 暗色 3 斜体 4 下划线 5 闪烁 常用颜色: (前景色为30+颜色代码;背景色为40+颜色代码。) 颜色 代码 前景 背景 黑 0 30 40 红 […]

从MySQL 5.7版本开始,MySQL不仅支持原有的压缩表格式(Table Compression),还支持一种称为透明页压缩的特性(Transparent Page Compression)。通过阅资料和源码,我对这个特性有了一定的了解。以下我将从它的使用方法、实现原理等方面对它进行简单分析,并同压缩表格式进行一些对比。 1. 开启方法 官方文档对于透明页压缩的特性的说明仅仅一页,主要说明了它的使用方法,我也对这页官方文档进行过翻译,详见:InnoDB Page Compression MySQL文档翻译:InnoDB透明页压缩 对于透明页压缩的使用方法,和压缩表格式相同的是,都是通过CREATE TABLE或者ALTER TABLE语法对于一个表使用的。不同点是压缩表格式使用ROW_FORMAT=COMPRESSED这个字段,而透明页压缩使用COMPRESSION=”zlib”、COMPRESSION=”lz4″或者COMPRESSION=”None”这种字段。分别用两种压缩形式创建一个表的例子: ## 创建一个表,启用压缩表格式,块的大小为8K CREATE TABLE t1(c1 INT) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; # 创建一个表,启用透明页压缩,压缩算法为LZ4 CREATE TABLE t1(c1 INT) COMPRESSION=”zlib”(“lz4”…); 另外要注意:开启透明页压缩需要文件系统和操作系统支持 Sparse File 和 Hole Punching 特性,并且需要开启InnoDB的file-per-table选项。更详细的使用方法见上边的那篇翻译。 2. 原理简述 2.1. 先说说以前压缩表格式

原文: [MySQL 5.7 Reference Manual 15.9.2 InnoDB Page Compression] https://dev.mysql.com/doc/refman/5.7/en/innodb-page-compression.html InnoDB支持file-per-table表空间中的表的页级压缩。 此功能称为透明页压缩。 通过使用CREATE TABLE或ALTER TABLE指定”COMPRESSION”这个表属性来启用页面压缩。 支持的压缩算法包括Zlib和LZ4。 支持的平台 页面压缩需要稀疏文件(sparse file)和打洞(hole punching)支持。 页面压缩在使用NTFS的Windows上被支持,并且在以下MySQL支持的Linux平台发行版的内核级别提供了打孔支持: RHEL 7 and derived distributions that use kernel version 3.10.0-123 or higher OEL 5.10 (UEK2) kernel version 2.6.39 or higher OEL 6.5 (UEK3) kernel version 3.8.13 or higher OEL 7.0 kernel version 3.8.13 or […]

原文: [MySQL 5.7 Manual 15.9.1.5 How Compression Works for InnoDB Tables] https://dev.mysql.com/doc/refman/5.7/en/innodb-compression-internals.html 本节介绍关于InnoDB表的压缩的一些内部实现细节。 这里介绍的信息可能有助于性能调优,但对压缩功能的基本使用并不必要。 压缩算法 某些操作系统在文件系统级别实现压缩。文件通常被分为固定大小的块,这些块被压缩后大小不固定,很容易导致碎片化。当块内的内容被修改时,在被写入磁盘之前,整个块都要被重新压缩。这些特性使得这种压缩技术不适合在update密集型当数据库系统中使用。 MySQL利用了广为人知的zlib库(基于LZ77压缩算法)来实现压缩功能。这种压缩算法在CPU利用率和减小数据大小方面都是成熟,稳健和高效的。该算法是“无损”的,从而可以始终从压缩形式重构原始的未压缩数据。 LZ77压缩通过查找要压缩的数据中重复的数据序列来实现压缩的目的。数据的具体形式决定了它的压缩程度,典型的用户数据通常会压缩50%或更多。 与一个应用程序执行的压缩或某些其他数据库管理系统的压缩功能不同,InnoDB压缩既适用于用户数据又适用于索引数据。在许多情况下,索引可以构成总数据库大小的40-50%以上,所以这带来的差异是显著的。当压缩对于某个数据集工作良好时,InnoDB数据文件(file-per-table的表空间或一般的表空间.idb文件)的大小是未压缩大小的25%到50%或更小。根据工作负载,压缩后的较小的数据库反过来很可能导致I/O数的减少,并以适度增加CPU占用率为成本增大了吞吐量。你可以通过修改innodb_compression_level配置选项来调整压缩级别和CPU开销之间的平衡。 InnoDB数据存储和压缩 InnoDB表中的所有用户数据都存储在包含B树索引(聚簇索引, clustered index)的页面中。 在其他一些数据库系统中,这种类型的索引称为“索引组织表”。 索引节点中的每一行都包含(用户指定的或系统生成的)主键和表的所有其他列的值。 InnoDB表中的辅助索引(secondary indexes)也是B树,包含键值对:索引键和指向聚簇索引中的某个行的指针。 指针实际上是表的主键的值,在需要除索引键和主键之外的列时,则需要查找到该值用来访问聚簇索引,进而访问到需要的列。 辅助索引记录必须始终可以放在单个B树页面。

原文: [MySQL 5.7 Manual 15.9.1.6 Compression for OLTP Workloads] https://dev.mysql.com/doc/refman/5.7/en/innodb-performance-compression-oltp.html 传统上,InnoDB压缩功能主要用于只读或大部分读取的工作负载,例如在数据仓库配置中。快速但相对较小和昂贵的SSD存储设备的兴起使得压缩对于OLTP工作负载也越发具有吸引力的:高流量的交互式网站可以通过使用压缩表同时使用具有执行频繁INSERT,UPDATE和DELETE操作的应用程序来减少其存储需求和每秒I/O操作数(IOPS)。 MySQL 5.6中引入的配置选项可让您调节压缩对特定MySQL实例的工作参数,其对于写入密集型操作的性能和可扩展性是很重要的: innodb_compression_level: 允许你向上或向下调整压缩程度,更高的值可以让你节省更多空间存储更多数据,同时在压缩时牺牲更多CPU周期,比较低的值可以让你在存储空间不重要时或者在数据不太适合被压缩时减小CPU开销。 innodb_compression_failure_threshold_pct: 指定了一个进行页压缩失败的百分比阈值,当它被超过时,MySQL开始在每个新的压缩页中增加一些额外的空闲的保留空间(padding),动态的调整这个空余空间的大小,padding的上限是由innodb_compression_pad_pct_max指定的,它是页面大小的一个百分比。 innodb_compression_pad_pct_max:允许你调整每个页面中用于直接保存更改和插入数据的空闲保留空间(padding)的最大值(这样就无需每次更改和插入都再次压缩整个页面)。 值越高,就可以记录更多的更改(???),而无需重新压缩页面。MySQL运行时,只有当需要昂贵分割操作的”压缩失败”达到上一个参数所指定的百分比时,才会为每个压缩表中的页面增加一个大小可变的空余空间(padding)。 innodb_log_compressed_pages:默认情况下,此选项被启用,以防止在恢复期间使用不同版本的zlib压缩算法时可能会发生损坏。 如果你确定zlib版本不会更改,请禁用innodb_log_compressed_pages以减少为修改压缩数据而生成的重做日志。 由于开启压缩时,内存中可能同时保留存在数据的压缩版本和未压缩版本,所以在OLTP工作负载下进行压缩时,innodb_buffer_pool_size配置选项的值可能会需要增加。

译者的废话 这是Red Hat RHEL 7文档中关于KVM虚拟机超量分配的说明文档,这里说的KVM,应该就是适用QEMU管理的KVM虚拟机的,因为在启动QEMU虚拟机的时候,只要-smp N和-m N参数分别就可以指定虚拟机的vCPU数和内存数,我实际实验发现,它们是都可以超过实际的物理CPU核数和内存大小的。 硬件资源超量分配,说的好听是节约资源,但是资源的分配超的不切实际,也就是”VPS超售”的万恶之源。。。比如一个4核8G内存的服务器,碰上黑心商家,不知道会被分出多少个1核1G内存的小崽子呢。。。不过这里Red Hat只是给出技术上的建议,没有提及VPS超售问题。嗯,做技术,不可耻。。。 原文: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/chap-Overcommitting_with_KVM.html#sect-Overcommitting_with_KVM-Introduction 简介 KVM hypervisor支持CPU和内存的超量分配。超量分配就是划分的虚拟CPU(vCPUs)或者内存比系统的实际物理资源多。通过CPU的超量分配,使用中的虚拟服务器或桌面就可以在更少的服务器上跑了,节省了不少系统资源,同时会减少电源、冷却等硬件方面的投资。 由于大多数进程始终不能访问其分配的内存的100%,因此KVM虚拟机可以利用此行为来分配给客户机虚拟机的多于实际可用的内存空间。 内存的超量分配 注意!