Linux記憶體子系統及常用調優參數

来源:http://www.cnblogs.com/xiaocheche/archive/2017/11/15/7841620.html
-Advertisement-
Play Games

1》記憶體子系統 1>組件: slab allocator buddy system kswapd pdflush 2>虛擬化環境: PA:進程地址; HA:虛擬機地址; MA:機器地址; 虛擬機轉換:PA >HA GuestOS(來賓主機),OS(宿主主機); Shadow PT:影子列表 3>Me ...


1》記憶體子系統

     1>組件:

        slab    allocator

        buddy    system

        kswapd

        pdflush

     2>虛擬化環境:

         PA:進程地址;

         HA:虛擬機地址;

         MA:機器地址;

         虛擬機轉換:PA---->HA

         GuestOS(來賓主機),OS(宿主主機);

         Shadow   PT:影子列表

     3>Memory:

         TLB:提升性能;

          Hugetable  page:

              使用的文件系統:Hugetlbfs;

                             

        啟用hugepages:

              1)修改/etc/sysctl.conf:

                  vm.nr_hugepages = n

                    

               2) Kernel  parameter:

                  hugepages = n

2》創建hugepages從而被應用所使用(不必明確指定文件系統類型,應用要使用時會自動調用,一般MYSQL的緩存塊需要使用大頁面):

          

          

3》Strace看進程如何運行,執行了哪些系統調用:

     1>strace  -p     PID ***查看啟動進程的系統調用;

           

     2>strace   命令:查看命令的系統調用;

           

       strace  -c   命令:加入-c可以只輸出命令過程中的摘要信息;

                    

       -o:將追蹤結果保存至文件中,以供後續分析使用;

4》優化記憶體子系統的使用:

      1>儘可能降低微小記憶體對象的開銷;

          Slab   cache: 

                              

      2>降低或延遲慢速子系統的服務時間;

          Filesystem   metadata:buffer  cache(slab  cache)====>使用buffer  cache緩存文件元數據;

          Disk  IO:page  cache====>使用page  cache來緩存DISK  IO,加速讀操作;

          Interprocess  communications:shared  memory====>使用共用記憶體來完成進程間通信;

          Network  IO:buffer  cache,arp  cache,connection  ruacking====>使用buffer  cache,arp  cache和connection  tracking提升網路IO性能;

      3>設置記憶體的最小空餘KB;

      4>註意避免記憶體過量使用:

            物理記憶體的過量使用是以swap為前提的,可以超出物理記憶體一部分;

              

              0:不回收dentries和inodes;

              1-99:傾向於不回收;

              100:傾向性與page  cache和swap  cache相同;

              100+:傾向於回收;

                     

          記憶體溢出(OOM):當內核發現由於發生記憶體溢出而無法再使用時會強制殺死占用大量記憶體的進程;

      5>調整網路IO的ARP緩存(/proc/net/arp);

5》進程間通信相關記憶體的調優:

      1>進程間通信類型:messages,semaphores,shared  memory;

            

      2>查看三者當前的限值:

            

      3>進程間通信管理類命令:

          ipcs:查看一些消息隊列;

          ipcrm:刪除某些已經失去作用的消息隊列,釋放記憶體;

      4>share  memory  和messages的相關參數:

          shm:

            shmmni:系統級別,所允許使用的共用記憶體段上限;

            shmall:系統級別,能夠為共用記憶體分配使用的最大頁面數;

            shmmax:單個共用記憶體段的上限;

          messages:

            msgmnb:單個消息隊列的上限,單位為位元組,預設是16384;

            msgmni:系統級別,消息隊列個數上限;

            msgmax:單個消息大小的上限,單位為位元組;

      5>手動清寫臟緩存和緩存,然後回收:

            sync:

            echo  s  >  /proc/sysrq-trigger

         回收:

            echo  1 >  /proc/sys/vm/drop_caches

              

            1  to   free   pagecache

            2  to   free   dentries   and   inodes

            3  to   free   pagecache,dentries  and  inodes

      6>Out-of-memory  killer:

          決定各個進程是否會被殺死的數值oom_score:

                -16-15:幫助計算oom_score

                -17:disables  the oom_killer  for  that  process

6》Swap相關:

      1>哪些頁面會被swap:

             非活動頁;

             匿名頁;

        Swap  cache:可以有效的避免資源競爭;  

      2>如何提高swap的性能:

          降低swap的think time,意味著我們使用小的swap分區;

          降低訪問次數,儘量不要使用swap,增大物理記憶體,不行的話就增加多個swap分區;

          降低服務時間;                

7》監控記憶體使用相關命令:

        sar   -r:查看記憶體活動情況;

        sar  -R:記憶體變換速率;

        sar  -W:緩存空間活動情況;

        sar  -B:I/O使用情況,報告頁面換進換出;  

                    

                  

              

     

     

        

         

                  

                  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • koa模塊 koa-route 路由 route.get("路徑",路由函數) koa-static 靜態資源載入 const serve(路徑) koa-compose 中間件合成模塊 koa-body 提取表單post請求鍵值對,處理上傳文件 上下文context的response和reques ...
  • 一、概要 這份彙總整理,很程度上參考了GitHub最全前端資源彙總;雲集前端教程、開發資源、免費書籍、手冊規範、求職面試等等,旨在為前端學習 & 技能提升提供方便。當然,並不期望這成為一個前端武學收藏夾;畢竟,只有自己掌握,才是真正擁有;況且前端發展如火如荼,日新月異。這裡會儘量保持探索 & 學習 ...
  • 註:入坑內容來源於易百教程,這隻是自己學習路上的經驗總結...(附上易百教程網址:http://www.yiibai.com/mysql/) MySQL導入示例資料庫(http://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql ...
  • http://blog.csdn.net/mr_green1024/article/details/53222526 ...
  • 簡單總結下Oracle/MySql/SQL Sqlserver這三個資料庫的分頁查詢語句 ...
  • 一、深入學習 group by group by ,分組,顧名思義,把數據按什麼來分組,每一組都有什麼特點。 1、我們先從最簡單的開始: select count(*) from tb1 group by tb1.sex; 查詢所有數據的條數,按性別來分組。這樣查詢到的結果集只有一列count(*) ...
  • oracle資料庫,對於新手來說總會遇到這樣的問題: 相信大家都遇到了這樣的問題,說實話,我曾經就遇到過這樣的問題,但是不好意思問旁邊的技術大咖,都有點懷疑人生了,然後自己在網上去查找原因,結果發現,網上各種版本, 好不容易才找到原因。就在前不久,又有同學問我這個問題,所以我就統一為犯過這個錯誤的同 ...
  • 1.從官網下載MySQL 下載地址:http://dev.mysql.com/downloads/ 2.解壓到想要安裝的目錄(博主安裝到: d:\mysql下) 新增一個my.ini文件,寫入如下內容: 3.以管理員身份運行 win+x(再按a,回車) 一直cd到d:\mysql\bin目錄 輸入命 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...