国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

零拷貝并非萬能解決方案:重新定義數據傳輸的效率極限

來源: 責編: 時間:2023-09-18 21:42:11 397觀看
導讀/ PageCache 有什么作用? /在我們前面講解零拷貝的內容時,我們了解到一個重要的概念,即內核緩沖區。那么,你可能會好奇內核緩沖區到底是什么?這個專有名詞就是 PageCache,也被稱為磁盤高速緩存。也可以看下 windows 下的緩

/ PageCache 有什么作用? /

在我們前面講解零拷貝的內容時,我們了解到一個重要的概念,即內核緩沖區。那么,你可能會好奇內核緩沖區到底是什么?這個專有名詞就是 PageCache,也被稱為磁盤高速緩存。也可以看下 windows 下的緩存區:如圖所示:PMr28資訊網——每日最新資訊28at.com

圖片圖片PMr28資訊網——每日最新資訊28at.com

零拷貝進一步提升性能的原因在于 PageCache 技術的使用。接下來,我們將詳細探討 PageCache 技術是如何實現這一目標的。PMr28資訊網——每日最新資訊28at.com

讀寫磁盤相比讀寫內存的速度慢太多了,但我們可以采取一種方法來改善這個問題,即將磁盤數據部分緩存到內核中,也就是將其存儲在 PageCache 緩存區中。這個過程實際上是通過 DMA(直接內存訪問)控制器將磁盤數據拷貝到內核緩沖區中。PMr28資訊網——每日最新資訊28at.com

然而,需要注意的是,由于內存空間較磁盤空間有限,因此存在一系列算法來確保 pageCache 占用的內存空間不過大。我們在程序運行時都知道存在一種「局部性」,即剛剛被訪問的數據在短時間內很可能再次被訪問到,概率很高。因此,pageCache 被用作緩存最近訪問的數據。可以將 pageCache 看作是 Redis,而磁盤則類似于 MySQL。此外,pageCache 還使用了內存淘汰機制,在內存空間不足時,會淘汰最近最久未被訪問的緩存。PMr28資訊網——每日最新資訊28at.com

當在項目中使用 Redis 時,你一定知道如何使用它。和 Redis 類似, PageCache 的工作原理也是一樣的。在進程需要訪問數據時,它會首先檢查 PageCache 是否已經存儲了所需的數據。如果數據已經存在于 PageCache 中,內核會直接返回數據;如果數據未被緩存,則會從磁盤讀取并將數據緩存到 PageCache 中,以備下次查詢時使用。這種方式可以有效提高訪問效率。PMr28資訊網——每日最新資訊28at.com

然而,pageCache 還具有另一個優點,即預讀功能。當訪問并讀取磁盤數據時,實際上需要定位磁盤中的位置。對于機械硬盤而言,這意味著磁頭必須旋轉到數據所在的扇區位置,然后開始順序讀取數據。然而,旋轉磁頭這種物理操作對計算機而言非常耗時。為了降低其影響,就出現了預讀功能。通過預讀功能,可以提前預讀下一扇區的數據,減少等待磁頭旋轉的時間。PMr28資訊網——每日最新資訊28at.com

比如 read 方法需要讀取 32KB 的字節的數據,使其在讀取 32KB 字節數據后,繼續讀取后面的 32-64KB,并將這一塊數據一起緩存到 pageCache 緩沖區。這樣做的好處在于,如果后續讀取需要的數據在這塊緩存中命中,那么讀取成本會大幅降低。可以類比于 redis 中提前緩存一部分分布式唯一 id 用于插入數據庫時的分配操作,這樣就無需每次插入前都去獲取一遍 id。然而,一般情況下,為了避免可能出現的"毛刺"現象,我們通常會使用雙緩存機制來處理。這個雙緩存機制可以進一步優化讀取操作的效果。PMr28資訊網——每日最新資訊28at.com

因此,PageCache 的優點主要包括兩個方面:首先,它能夠將數據緩存到 PageCache 中;其次,它還利用了數據的預讀功能。這兩個操作極大地增強了讀寫磁盤時的性能。PMr28資訊網——每日最新資訊28at.com

但是,你可以想象一下如果你在傳輸大文件時比如好幾個 G 的文件,如果還是使用零拷貝技術,內核還是會把他們放入 pageCache 緩存區,那這樣不就產生問題了嗎?你也可以想一下如果你往 redis 緩存中放了一個還幾個 G 大小的 value,而且還知道緩存了也沒用,那不就相當于 redis 形同虛設了嗎?把其他熱點數據也弄沒了,所以 pageCache 也有這樣的一個問題,一是大文件搶占了 pageCache 的內存大小,這樣做會導致其他熱點數據無法存儲在 pageCache 緩沖區中,從而降低磁盤的讀寫性能。此外,由于 pageCache 無法享受到緩存的好處,還會產生一個 DMA 數據拷貝的過程。PMr28資訊網——每日最新資訊28at.com

因此,最佳的優化方法是針對大文件傳輸時不使用 pageCache,也就是不使用零拷貝技術。這是因為零拷貝技術會占用大量的內存空間,影響其他熱點數據的訪問優化。在高并發環境下,這幾乎肯定會導致嚴重的性能問題。PMr28資訊網——每日最新資訊28at.com

/ 大文件傳輸用什么方式實現? /

那針對大文件的傳輸,我們應該使用什么方式呢?PMr28資訊網——每日最新資訊28at.com

讓我們首先來觀察最初的示例。當調用 read 方法讀取文件時,進程實際上會被阻塞在 read 方法的調用處,因為它需要等待磁盤數據的返回。如下圖所示:PMr28資訊網——每日最新資訊28at.com

圖片圖片PMr28資訊網——每日最新資訊28at.com

在沒有使用零拷貝技術的情況下,我們的用戶進程使用同步 IO 的方式,它會一直阻塞等待系統調用返回數據。讓我們回顧一下之前的具體流程:PMr28資訊網——每日最新資訊28at.com

  1. 應用程序發起 read 系統調用,用戶進程開始進行阻塞等待結果返回。
  2. 此時內核會向磁盤發起 I/O 請求,磁盤收到請求后,開始尋址。當磁盤數據準備好后,就會向內核發起 I/O 中斷,告知內核磁盤數據已經準備好。
  3. 內核收到中斷信號后,將數據從磁盤控制器緩存區拷貝到 pageCache 緩沖區。
  4. 最后,內核會將 pageCache 中的數據再次拷貝到用戶緩沖區,也就是用戶態的內存中,然后 read 調用返回。

我們知道,既然有同步 IO,就一定有異步 IO 來解決阻塞的問題。異步 IO 的工作方式如下圖所示:PMr28資訊網——每日最新資訊28at.com

圖片圖片PMr28資訊網——每日最新資訊28at.com

它將讀操作分為兩個部分:PMr28資訊網——每日最新資訊28at.com

  1. 第一部分是用戶進程發起 IO 請求給內核,然后進程就不再關心該 IO 操作,而是繼續處理其他任務。
  2. 第二部分是當內核接收到中斷信號后,將數據直接拷貝到用戶緩沖區,并通知用戶進程操作成功。然后用戶進程開始處理數據。

我們發現在這個過程中,并沒有涉及到將數據拷貝到 pageCache 中,因此使用異步方式繞開了 pageCache。直接 IO 是指繞過 pageCache 的 IO 請求,而緩存 IO 是指使用 pageCache 的 IO 請求。通常,對于磁盤而言,異步 IO 只支持直接 IO。PMr28資訊網——每日最新資訊28at.com

正如前面所提到的,對于大文件的傳輸,不應該使用 PageCache,因為這可能會導致 PageCache 被大文件占據,從而使得"熱點"小文件無法充分利用 PageCache 的優勢。PMr28資訊網——每日最新資訊28at.com

因此,在高并發的場景下,對于大文件傳輸,我們應該采用"異步 I/O + 直接 I/O"的方式來代替零拷貝技術。PMr28資訊網——每日最新資訊28at.com

直接 I/O 有兩種常見的應用場景:PMr28資訊網——每日最新資訊28at.com

  1. 首先,如果應用程序已經實現了磁盤數據的緩存,就不需要再次使用 PageCache 進行緩存,這樣可以減少額外的性能損耗。例如,在 MySQL 數據庫中,可以通過參數設置來開啟直接 I/O,避免重復的緩存操作,默認情況下是不開啟的。
  2. 其次,在傳輸大文件時,由于大文件很難命中 PageCache 的緩存,而且會占滿 PageCache 導致"熱點"文件無法充分利用緩存,增加了性能開銷。因此,在這種情況下,應該使用直接 I/O 來繞過 PageCache 的緩存,以提高性能。

需要注意的是,直接 I/O 繞過了 PageCache,因此無法享受內核的兩項優化。PMr28資訊網——每日最新資訊28at.com

  1. 首先,內核的 I/O 調度算法會在 PageCache 中緩存盡可能多的 I/O 請求,然后將它們合并成一個更大的 I/O 請求發送給磁盤,以減少磁盤的尋址操作。
  2. 其次,內核會預讀后續的 I/O 請求并將其放入 PageCache 中,同樣是為了減少對磁盤的操作。這些優化在直接 I/O 中無法享受到。

于是,當我們需要傳輸大文件時,我們可以利用異步 I/O 和直接 I/O 的組合來實現無阻塞的文件讀取。這種方式可以有效避免 PageCache 的影響,提高文件傳輸的效率。PMr28資訊網——每日最新資訊28at.com

因此,在文件傳輸過程中,我們可以根據文件的大小來選擇不同的優化方式,以提高傳輸效率。對于大文件,使用異步 I/O 和直接 I/O 可以避免 PageCache 的影響;而對于小文件,則可以使用零拷貝技術來減少數據拷貝次數,提高傳輸速度。PMr28資訊網——每日最新資訊28at.com

在 Nginx 中,我們可以通過以下配置來根據文件的大小選擇不同的優化方式:PMr28資訊網——每日最新資訊28at.com

location /video/ {     sendfile on;     aio on;     directio 1024m; }

在這個配置中,我們開啟了 sendfile 選項,這允許 Nginx 使用零拷貝技術來傳輸文件。同時,我們也啟用了 aio 選項,這使得 Nginx 可以使用異步 I/O 來提高文件傳輸的效率。PMr28資訊網——每日最新資訊28at.com

而通過設置 directio 參數為 1024m,我們告訴 Nginx 當文件大小超過 1024MB 時,使用直接 I/O 來進行文件傳輸。這意味著在傳輸大文件時,Nginx 將使用異步 I/O 和直接 I/O 的組合來實現無阻塞的文件讀取,避免了 PageCache 的影響。而對于小文件,Nginx 將繼續使用零拷貝技術,以減少數據拷貝次數,提高傳輸速度。PMr28資訊網——每日最新資訊28at.com

/ 總結 /

至此,我們的計算機基礎專欄就結束了,不知道大家有沒有發現,操作系統底層提供了豐富的解決方案來支持應用程序的復雜性和可擴展性。對于任何工作中遇到的問題,我們都可以從操作系統的角度尋找解決方法。PMr28資訊網——每日最新資訊28at.com

今天這一篇其實就是來打破零拷貝的方案神話的,沒有一種技術是最好的,只有最合適的方法。我們需要根據具體的需求和情況來選擇適合的解決方案,以提高應用程序的性能和可擴展性。謝謝大家的閱讀和關注,希望這個專欄能對大家有所啟發和幫助!PMr28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-10483-0.html零拷貝并非萬能解決方案:重新定義數據傳輸的效率極限

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 竟然可以在一個項目中混用 Vue 和 React?

下一篇: JsonPath詳細使用教程,你了解多少?

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
在线观看国产一区二区| 夜夜嗨av一区二区三区四季av| 色综合久久六月婷婷中文字幕| 亚洲精品社区| k8久久久一区二区三区| 国产精品1024| 成人av在线一区二区| av男人天堂一区| 欧美日韩高清在线一区| 合欧美一区二区三区| 欧美涩涩视频| 国产一区二区三区久久| 久久xxxx| 欧美伊人久久大香线蕉综合69| 欧美日韩中文字幕精品| 欧美日韩国产一二三| 日韩欧美在线一区二区三区| 欧美成人福利视频| 国产精品五月天| 一个色在线综合| 日韩av中文在线观看| 精品一区二区三区视频| 国产不卡高清在线观看视频| 91丝袜美女网| 日韩午夜视频在线观看| 色综合久久99| 欧美成人video| 国产精品网站一区| 午夜激情久久久| 国产精品系列在线播放| 91麻豆免费看| 免费久久99精品国产自| 欧美精品自拍偷拍动漫精品| 欧美精品一区二区不卡| 一区二区欧美国产| 国产一区二区看久久| 国产精品sm| 91福利在线导航| 久久女同精品一区二区| 一区二区三区四区视频精品免费| 久久99国产精品免费| 欧美日韩一区二区三区免费| 色综合久久久久久久久久久| 精品免费日韩av| 五月天欧美精品| av在线不卡电影| 久久精品国语| 精品国产sm最大网站| 亚洲影视在线播放| 高清在线不卡av| 在线综合欧美| 精品人伦一区二区色婷婷| 亚洲制服丝袜在线| www.亚洲色图.com| 日本电影欧美片| 国产精品日韩成人| 国产精品12区| 久久婷婷影院| 国产精品国产三级国产aⅴ原创| 亚洲成人免费影院| 91在线精品秘密一区二区| 欧美系列在线观看| 日韩美女视频一区二区| 成人精品一区二区三区四区 | 色94色欧美sute亚洲线路一久| 久久综合精品国产一区二区三区| 性感美女极品91精品| 国产一区清纯| 精品国产青草久久久久福利| 美女网站色91| 亚洲一区二区三区精品动漫| 国产欧美精品区一区二区三区 | 在线中文字幕不卡| 一区二区三区小说| 欧美区日韩区| 日韩午夜小视频| 久久国产精品第一页| 久久精品女人| 一区二区三区精品视频| 国产精品v亚洲精品v日韩精品 | 国产偷国产偷精品高清尤物 | 国产视频亚洲| 亚洲视频 欧洲视频| 欧美激情91| 国产亚洲欧美日韩俺去了| 粉嫩绯色av一区二区在线观看| 欧美影片第一页| 日日夜夜免费精品视频| 国产欧美日韩亚洲一区二区三区| 国产精品天美传媒| 国产精品二区二区三区| 欧美激情一区二区三区在线| 99精品在线观看视频| 精品国产一区二区三区四区四 | 国产99久久久久久免费看农村| 噜噜噜躁狠狠躁狠狠精品视频 | 91丨九色丨蝌蚪富婆spa| 精品国产污网站| 99精品视频中文字幕| 精品免费国产二区三区| 91猫先生在线| 国产精品美女久久久久久久久| 欧美网站在线| 综合激情网...| 亚洲国产欧美日韩| 亚洲综合在线电影| 久久久久国产精品一区三寸| 午夜影视日本亚洲欧洲精品| 久久精品九九| 久久成人久久鬼色| 日韩一区二区影院| 91丨九色丨尤物| 亚洲天堂免费看| 欧美亚洲一区二区三区| 琪琪一区二区三区| 日韩一级高清毛片| 亚洲欧美影院| 亚洲综合色区另类av| 日本韩国欧美在线| 国产精品主播直播| 国产蜜臀97一区二区三区 | 国产午夜一区二区三区| 亚洲高清资源综合久久精品| 一区二区在线看| 欧美丝袜丝nylons| 99re8在线精品视频免费播放| 中文字幕一区二区三区不卡在线 | 久久蜜桃av一区精品变态类天堂 | 久久影院视频免费| 国产日韩欧美| 国产精品一区二区免费不卡| 久久久www成人免费毛片麻豆| 亚洲黄色av| 老司机精品视频线观看86| 2017欧美狠狠色| 免费久久99精品国产自| 国产成人午夜精品影院观看视频| 国产欧美精品一区二区色综合朱莉| 一级成人国产| 国产成人免费视频网站| 国产精品二区一区二区aⅴ污介绍| 亚洲欧美久久| 成人动漫中文字幕| 亚洲国产乱码最新视频| 精品国产成人系列| 免费看亚洲片| av在线播放成人| 日韩av网站免费在线| 国产亚洲午夜高清国产拍精品 | 国产亚洲一区二区在线观看| 久久亚洲美女| 欧美成人一区二免费视频软件| 天天综合网 天天综合色| 欧美精品一区二| 色狠狠一区二区三区香蕉| 91网站最新地址| 另类小说图片综合网| 国产精品国产三级国产普通话蜜臀 | 色国产综合视频| 国产综合色产| 成人动漫一区二区在线| 男人的天堂亚洲一区| 中文字幕欧美一| 日韩欧美一区中文| 久久视频一区| 亚洲区第一页| 欧美精品七区| 成人一区二区三区视频在线观看| 亚洲sss视频在线视频| 亚洲国产成人自拍| 日韩免费成人网| 欧美午夜精品久久久久久孕妇| 亚洲欧洲日本一区二区三区| voyeur盗摄精品| 国产大陆a不卡| 麻豆国产欧美日韩综合精品二区| 成人免费在线视频观看| 久久久噜噜噜久噜久久综合| 欧美精品aⅴ在线视频| 91豆麻精品91久久久久久| 99热这里只有成人精品国产| 欧美日韩国产精品一区二区亚洲| 成人毛片在线观看| 国产毛片精品视频| 精品一区二区三区香蕉蜜桃| 首页欧美精品中文字幕| 亚洲综合无码一区二区| 亚洲天堂精品在线观看| 日本一区二区免费在线| 久久九九影视网| 精品国产乱码久久久久久久久| 欧美男人的天堂一二区| 欧美性感一类影片在线播放| 日本国产一区二区| 一本色道a无线码一区v| 色婷婷久久综合| 在线中文字幕不卡| 欧美色精品在线视频| 欧美日韩一区二区在线观看视频| 在线观看日韩一区|