网站大量收购独家精品文档,联系QQ:2885784924

Linux那些破事儿之我的高性能.pdf

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux那些破事儿之我的高性能

Linux 那些破事儿之我的高性能 1. 引子 台湾作家林清玄在接受记者采访的时候,如此评价自己 30 多年写作生涯: “第一个十年我才华横溢,‘贼光闪现’,令周边黯然失色;第二个十年,我终于 ‘宝光现形’,不再去抢风头,反而与身边的美丽相得益彰;进入第三个十年, 繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正体味到了境界之美”。 长夜有穷,真水无香。领略过了Linux 特种文件系统的繁花似锦,该是体味 性能境界之美的时候了。 首先感谢大家,能够花时间在这里看我发疯,与我共同完成这种伪技术课程。 真的,时间有限生命有限,我永远相信,挤乳沟要比挤时间容易很多。这一节课 中,我挑选出了几个当今Linux 系统中最具高性能特质的东东,把它们进行抽丝 剥茧,打碎牙齿,统统喂到你们耳朵里。至于你们能不能接受,反正我是过瘾了。 我在每一个小节都会划分为:技术背景、理论和实际应用案例三个部分。虽 然是这么划的,但是我会根据自己对某一方面掌握的深浅,在这三个部分中的侧 重会有所偏差。还是那句话:至于你们习惯不习惯,反正我就是这么划了。 2. epoll 某医学院上专业课,一男老师叫起一位不专心听讲的女生问:“人体哪个器 官,在激动时可以变大好几倍?”女生憋得脸通红不知如何作答。一男生出来解 围,答道:“瞳孔。” 呵呵,你们是否也想歪了?不过,在医学界有一个专有名词叫 ED,凡是患 上这种疾病的男性,不管怎么激动,有个器官怎么都不会变大。这次你们没有想 歪,因为这种疾病的中文名称叫阳痿。在计算机界有一个跟这相似的名词叫ET, 中文上叫边沿触发。在发音上,ED 和 ET 很多时候是会让人混淆的,差别就在 于:作为男人你肯定是不想ED 的,但作为真男人你一定喜欢ET 。 epoll ,自从出现在人们视野中,就从不缺乏对它好奇而又有莫大敬畏的追 随者,并且一直是他们的午后谈资。究其原因就是在人们心目中,epoll 就是大 并发、高性能的代表,可是它所引入的,据说是最具超能力素质的ET 工作模式, 总是引发出各种让人们琢磨不透的问题,让人百思不得其钥匙。那么,接下来, 我就跟大家一起,配好这把钥匙吧。 2.1 背景 自从世上第一台计算机诞生到今天,计算机的本质——输入和输出,简称 I/O——就从来没有改变过。因为,没有输入,计算机就不知道要计算什么;没 有输出,再快的计算也没有意义。如何处理I/O,也就成了计算机界恒古不变的 话题。 随着技术的日新月异,计算机的速度越快,对高效的处理I/O 的需求就越紧 迫,在人们的不断探索中,时至今日已经发明了很多种处理I/O 问题的方式,从 形式上划分的话,可归类为4 大模型:阻塞、非阻塞、复用和异步。 阻塞式 I/O 就不必多说了,非阻塞式 I/O 就是在 I/O 请求时加上 O_NONBLOCK 一类的标志,立刻返回,I/O 没有就绪就会返回错误,需要请求者 主动轮询不断发I/O 请求直到返回返回正确;I/O 复用同非阻塞式I/O 本质是一 样的,不过利用新的select、poll、epoll 等系统调用,由操作系统来负责轮询操 作;异步I/O 也不会因为I/O 操作而阻塞,但不需要轮询,待I/O 操作完成后通 知请求者。作为网络服务器应用,到目前为止I/O 服用依然是最为有效的解决方 案,异步I/O 再处理大量网络请求时,相较于I/O 服用需要更多的系统资源,因 此更适用于量少但对性能要求较高的文件处理和网络传输。我们先讨论I/O 复用, 后面我们再详细讨论异步I/O 。 I/O 复用是随着网络的发展,网络服务器需要处理大量客户请求的历史背景 下被发明的。大家耳熟能详的,也是最为著名的select 调用,就是这个背景下的 产物。I/O 复用实际上是一种复合I/O 模型,既利用类似于select 的调用对阻塞 或非阻塞式I/O 的一个集合进行监控,找出那些调用者所感兴趣的I/O 事件。 经典的select 处理方式是这样的:调用者将需要监控的I/O 句柄放入一个数 组中,将这个数组传递给select 调用,并设定监控何种事件(一般是可读或可写); 这时select 会阻塞调用进程(当前多数使用线程);当有I/O 事件发生时,select 就在数组中给发生了事件的那些I/O 句柄

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档