當前位置:編程學習大全網 - 源碼下載 - Linux 裏面怎麽讓系統分配更多的內存給mysql用

Linux 裏面怎麽讓系統分配更多的內存給mysql用

Linux 進程通過 C 標準庫中的內存分配函數 malloc 向系統申請內存,但是到真正與內核交互之間,其實還隔了壹層,即內存分配管理器(memory allocator)。常見的內存分配器包括:ptmalloc(Glibc)、tcmalloc(Google)、jemalloc(FreeBSD)。MySQL 默認使用的是 glibc 的 ptmalloc 作為內存分配器。

內存分配器采用的是內存池的管理方式,處在用戶程序層和內核層之間,它響應用戶的分配請求,向操作系統申請內存,然後將其返回給用戶程序。

為了保持高效的分配,分配器通常會預先向操作系統申請壹塊內存,當用戶程序申請和釋放內存的時候,分配器會將這些內存管理起來,並通過壹些算法策略來判斷是否將其返回給操作系統。這樣做的最大好處就是可以避免用戶程序頻繁的調用系統來進行內存分配,使用戶程序在內存使用上更加高效快捷。

關於 ptmalloc 的內存分配原理,個人也不是非常了解,這裏就不班門弄斧了,有興趣的同學可以去看下華庭的《glibc 內存管理 ptmalloc 源代碼分析》。

關於如何選擇這三種內存分配器,網上資料大多都是推薦摒棄 glibc 原生的 ptmalloc,而改用 jemalloc 或者 tcmalloc 作為默認分配器。因為 ptmalloc 的主要問題其實是內存浪費、內存碎片、以及加鎖導致的性能問題,而 jemalloc 與 tcmalloc 對於內存碎片、多線程處理優化的更好。

目前 jemalloc 應用於 Firefox、FaceBook 等,並且是 MariaDB、Redis、Tengine 默認推薦的內存分配器,而 tcmalloc 則應用於 WebKit、Chrome 等。

  • 上一篇:我想在超市旁邊小門面賣手機殼之類的可以嗎?
  • 下一篇:買瓷磚壹般砍價多少 買瓷磚怎麽砍價
  • copyright 2024編程學習大全網