{"id":208370,"date":"2025-07-31T14:29:48","date_gmt":"2025-07-31T06:29:48","guid":{"rendered":"https:\/\/server.hk\/cnblog\/?p=208370"},"modified":"2025-07-31T14:29:48","modified_gmt":"2025-07-31T06:29:48","slug":"linux%e8%a8%98%e6%86%b6%e9%ab%94%e7%ae%a1%e7%90%86%e6%a0%b8%e5%bf%83%e6%a9%9f%e5%88%b6%e8%a7%a3%e6%9e%90","status":"publish","type":"post","link":"https:\/\/server.hk\/cnblog\/208370\/","title":{"rendered":"Linux\u8a18\u61b6\u9ad4\u7ba1\u7406\u6838\u5fc3\u6a5f\u5236\u89e3\u6790"},"content":{"rendered":"<div class=\"md-code-block md-code-block-light\">\n<pre><span class=\"token title important\"> \u4e00\u3001\u7269\u7406\u8a18\u61b6\u9ad4\u5206\u914d\u9ad4\u7cfb<\/span>\r\n\r\n<span class=\"token title important\">\u258b 1.1 \u5925\u4f34\u7cfb\u7d71\uff08Buddy\uff09\u57fa\u790e<\/span>\r\n<span class=\"token list punctuation\">-<\/span> <span class=\"token bold\"><span class=\"token punctuation\">**<\/span><span class=\"token content\">\u6700\u5c0f\u7ba1\u7406\u55ae\u4f4d<\/span><span class=\"token punctuation\">**<\/span><\/span>\uff1a\u9801\uff08\u901a\u5e384KB\uff09\r\n<span class=\"token list punctuation\">-<\/span> <span class=\"token bold\"><span class=\"token punctuation\">**<\/span><span class=\"token content\">\u7ba1\u7406\u65b9\u5f0f<\/span><span class=\"token punctuation\">**<\/span><\/span>\uff1a\u51aa\u6b21\u584a\u5206\u7d44\u93c8  \r\n  <span class=\"token code-snippet code keyword\">`\u7a7a\u9592\u584a\u5206\u70ba 1\/2\/4\/... \u9801\u7d44`<\/span>\r\n<span class=\"token list punctuation\">-<\/span> <span class=\"token bold\"><span class=\"token punctuation\">**<\/span><span class=\"token content\">\u5206\u914d\u9650\u5236<\/span><span class=\"token punctuation\">**<\/span><\/span>\uff1a\u6700\u5c0f\u5206\u914d\u55ae\u4f4d\u70ba\u4e00\u9801\uff084KB\uff09\r\n\r\n<span class=\"token title important\">\u258b 1.2 \u7cbe\u7d30\u5316\u5206\u914d\u9700\u6c42<\/span>\r\n<span class=\"token table\"><span class=\"token table-header-row\"><span class=\"token punctuation\">|<\/span><span class=\"token table-header important\"> \u61c9\u7528\u5834\u666f          <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-header important\"> \u89e3\u6c7a\u65b9\u6848         <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-header important\"> \u5be6\u73fe\u539f\u7406                 <\/span><span class=\"token punctuation\">|<\/span>\r\n<\/span><span class=\"token table-line\"><span class=\"token punctuation\">|<\/span><span class=\"token punctuation\">-------------------<\/span><span class=\"token punctuation\">|<\/span><span class=\"token punctuation\">------------------<\/span><span class=\"token punctuation\">|<\/span><span class=\"token punctuation\">--------------------------<\/span><span class=\"token punctuation\">|<\/span>\r\n<\/span><\/span>| \u5167\u6838\u983b\u7e41\u7533\u8acb\u5c0f\u8a18\u61b6\u9ad4<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>br<span class=\"token punctuation\">&gt;<\/span><\/span>\uff08\u59828B\u7d50\u69cb\u9ad4\uff09 | Slab\u5206\u914d\u5668<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>br<span class=\"token punctuation\">&gt;<\/span><\/span>\uff08\u4e8c\u7d1a\u5feb\u53d6\uff09 | ```mermaid\r\ngraph LR\r\nBuddy[\u5206\u914d4KB\u9801] --&gt; Slab\r\nSlab --&gt;|\u5207\u5272512\u4efd| Object[8B\u7269\u4ef6]\r\n``` |\r\n\r\n<span class=\"token title important\"> \u4e8c\u3001Slab\u6a5f\u5236\u6df1\u5ea6\u5256\u6790<\/span>\r\n\r\n<span class=\"token title important\"> \u258b 2.1 \u5de5\u4f5c\u6a21\u5f0f<\/span>\r\n<span class=\"token list punctuation\">-<\/span> <span class=\"token bold\"><span class=\"token punctuation\">**<\/span><span class=\"token content\">\u4e09\u5927\u5be6\u73fe<\/span><span class=\"token punctuation\">**<\/span><\/span>\uff1aSlab\/Slub\/Slob\uff08\u6f14\u7b97\u6cd5\u5dee\u7570\uff09\r\n<span class=\"token list punctuation\">-<\/span> <span class=\"token bold\"><span class=\"token punctuation\">**<\/span><span class=\"token content\">\u6838\u5fc3\u4f5c\u7528<\/span><span class=\"token punctuation\">**<\/span><\/span>\uff1a\r\n  <span class=\"token list punctuation\">-<\/span> \u25b6 \u9810\u5206\u914d\u9ad8\u983b\u6578\u64da\u7d50\u69cb\uff08\u5982TCPv6\u9023\u63a5\u7269\u4ef6\uff09\r\n  <span class=\"token list punctuation\">-<\/span> \u25b6 \u7ba1\u7406\u5e38\u898f\u5c0f\u584a\u8a18\u61b6\u9ad4\uff08kmalloc-32\/64\u7b49\uff09\r\n<span class=\"token list punctuation\">-<\/span> <span class=\"token bold\"><span class=\"token punctuation\">**<\/span><span class=\"token content\">\u76e3\u63a7\u4ecb\u9762<\/span><span class=\"token punctuation\">**<\/span><\/span>\uff1a<span class=\"token code-snippet code keyword\">`cat \/proc\/slabinfo`<\/span>\r\n  <span class=\"token list punctuation\">-<\/span> \u95dc\u9375\u5b57\u6bb5\uff1a<span class=\"token code-snippet code keyword\">`objperslab`<\/span>(\u7269\u4ef6\u6578), <span class=\"token code-snippet code keyword\">`active_objs`<\/span>(\u6d3b\u8e8d\u6578)\r\n\r\n<span class=\"token title important\">\u258b 2.2 \u7279\u6b8a\u61c9\u7528\u5834\u666f<\/span>\r\n<span class=\"token blockquote punctuation\">&gt;<\/span> \ud83d\udca1 \u5728<a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u90e8\u7f72\u7db2\u8def\u670d\u52d9\u6642\uff0cNFSd\u7b49\u670d\u52d9\u7684Slab\u5feb\u53d6\u914d\u7f6e\u76f4\u63a5\u5f71\u97ff\u9ad8\u4f75\u767c\u6548\u80fd\r\n\r\n<span class=\"token title important\"> \u258b 2.3 \u5c64\u7d1a\u95dc\u4fc2<\/span>\r\n<span class=\"token table\"><span class=\"token table-header-row\"><span class=\"token punctuation\">|<\/span><span class=\"token table-header important\"> \u5206\u914d\u5668   <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-header important\"> \u7ba1\u7406\u7bc4\u570d       <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-header important\"> \u4f86\u6e90\/\u76ee\u6a19        <\/span><span class=\"token punctuation\">|<\/span>\r\n<\/span><span class=\"token table-line\"><span class=\"token punctuation\">|<\/span><span class=\"token punctuation\">----------<\/span><span class=\"token punctuation\">|<\/span><span class=\"token punctuation\">---------------<\/span><span class=\"token punctuation\">|<\/span><span class=\"token punctuation\">------------------<\/span><span class=\"token punctuation\">|<\/span>\r\n<\/span><span class=\"token table-data-rows\"><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> <span class=\"token code-snippet code keyword\">`Buddy`<\/span>  <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> \u7269\u7406\u9801\u6846      <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> \u76f4\u63a5\u7ba1\u7406\u8a18\u61b6\u9ad4\u6a21\u7d44 <\/span><span class=\"token punctuation\">|<\/span>\r\n<span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> <span class=\"token code-snippet code keyword\">`Slab`<\/span>   <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> \u5167\u6838\u5c0f\u7269\u4ef6     <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> \u5f9eBuddy\u7372\u53d6      <\/span><span class=\"token punctuation\">|<\/span>\r\n<span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> <span class=\"token code-snippet code keyword\">`malloc`<\/span> <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> \u7528\u6236\u7a7a\u9593\u8a18\u61b6\u9ad4 <\/span><span class=\"token punctuation\">|<\/span><span class=\"token table-data\"> \u901a\u904eC\u5eab\u7ba1\u7406      <\/span><span class=\"token punctuation\">|<\/span>\r\n<\/span><\/span>\r\n<span class=\"token title important\">\u4e09\u3001\u865b\u64ec\u5730\u5740\u6620\u5c04\u6a5f\u5236<\/span>\r\n\r\n<span class=\"token title important\"> \u258b 3.1 \u6838\u5fc3\u5dee\u7570\u5c0d\u6bd4<\/span>\r\n```mermaid\r\ngraph TD\r\n    kmalloc --&gt;|\u76f4\u63a5\u6620\u5c04| Lowmem[\u4f4e\u7aef\u8a18\u61b6\u9ad4]\r\n    vmalloc --&gt;|\u52d5\u614b\u6620\u5c04| Highmem[\u9ad8\u7aef\u8a18\u61b6\u9ad4]\r\n    ioremap --&gt;|\u66ab\u5b58\u5668\u6620\u5c04| Vmalloc_Region<\/pre>\n<\/div>\n<h3>\u258b 3.2 \u95dc\u9375\u7279\u6027<\/h3>\n<h4><strong>kmalloc\u7279\u9ede<\/strong>\uff1a<\/h4>\n<ul>\n<li>\n<p class=\"ds-markdown-paragraph\">\u2705 \u7269\u7406\u5730\u5740\u9023\u7e8c<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u2705 \u4e0d\u4fee\u6539\u9032\u7a0b\u9801\u8868<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u2705 \u9069\u7528DMA\u64cd\u4f5c<\/p>\n<\/li>\n<\/ul>\n<h4><strong>vmalloc\u7279\u9ede<\/strong>\uff1a<\/h4>\n<ul>\n<li>\n<p class=\"ds-markdown-paragraph\">\ud83d\udd04 \u865b\u64ec\u5730\u5740\u9023\u7e8c\u4f46\u7269\u7406\u4e0d\u9023\u7e8c<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u270f\ufe0f \u9700\u4fee\u6539\u9801\u8868\u6620\u5c04<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\ud83d\udce6 \u9069\u7528\u5927\u584a\u8a18\u61b6\u9ad4\u7533\u8acb<\/p>\n<\/li>\n<\/ul>\n<h2>\u56db\u3001\u8a18\u61b6\u9ad4\u5206\u914d\u512a\u5316\u7b56\u7565<\/h2>\n<h3>\u258b 4.1 Lazy\u5206\u914d\u6a5f\u5236<\/h3>\n<p class=\"ds-markdown-paragraph\"><strong>\u7528\u6236\u7a7a\u9593malloc\u884c\u70ba<\/strong>\uff1a<\/p>\n<ol start=\"1\">\n<li>\n<p class=\"ds-markdown-paragraph\">\u7533\u8acb\u6642\uff1a\u5efa\u7acb\u552f\u8b80\u96f6\u9801\u6620\u5c04<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u5beb\u64cd\u4f5c\u6642\uff1a\u89f8\u767c\u7f3a\u9801\u4e2d\u65b7 \u2192 \u771f\u5be6\u5206\u914d<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u5167\u6838\u5dee\u7570\uff1a<code>kmalloc<\/code>\u7acb\u5373\u5206\u914d\u7269\u7406\u9801<\/p>\n<\/li>\n<\/ol>\n<h3>\u258b 4.2 OOM\u9632\u8b77\u5be6\u8e10<\/h3>\n<p class=\"ds-markdown-paragraph\"><strong>\u8a55\u5206\u6a5f\u5236<\/strong>\uff1a<\/p>\n<div class=\"md-code-block md-code-block-light\">\n<div class=\"md-code-block-banner-wrap\">\n<div class=\"md-code-block-banner md-code-block-banner-lite\">\n<div class=\"_121d384\">\n<div class=\"d2a24f03\"><span class=\"d813de27\">bash<\/span><\/div>\n<div class=\"d2a24f03\">\n<div class=\"efa13877\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre>$ <span class=\"token builtin class-name\">echo<\/span> <span class=\"token parameter variable\">-100<\/span> <span class=\"token operator\">&gt;<\/span> \/proc\/<span class=\"token variable\">$PID<\/span>\/oom_score_adj  <span class=\"token comment\"># \u4fdd\u8b77\u95dc\u9375\u9032\u7a0b<\/span><\/pre>\n<\/div>\n<p class=\"ds-markdown-paragraph\"><strong><a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u7dad\u904b\u5efa\u8b70<\/strong>\uff1a<\/p>\n<ul>\n<li>\n<p class=\"ds-markdown-paragraph\">\u2699\ufe0f \u8abf\u6574\u95dc\u9375\u670d\u52d9\u7684<code>oom_score_adj<\/code>\u503c<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\ud83d\udc41\ufe0f \u76e3\u63a7<code>\/proc\/vmallocinfo<\/code>\u4e2d\u7684ioremap\u6620\u5c04<\/p>\n<\/li>\n<\/ul>\n<h2>\u4e94\u3001\u4f3a\u670d\u5668\u74b0\u5883\u5be6\u8e10\u8981\u9ede<\/h2>\n<h3>\u258b \u6838\u5fc3\u64cd\u4f5c\u6307\u5357<\/h3>\n<div class=\"markdown-table-wrapper\">\n<table>\n<thead>\n<tr>\n<th>\u985e\u5225<\/th>\n<th>\u64cd\u4f5c\u5efa\u8b70<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Slab\u8abf\u512a<\/td>\n<td>\u91dd\u5c0d\u9ad8\u983b\u7269\u4ef6\uff08\u5982TCP\u9023\u63a5\uff09\u8abf\u6574\u5feb\u53d6<\/td>\n<\/tr>\n<tr>\n<td>\u8a18\u61b6\u9ad4\u76e3\u63a7<\/td>\n<td>\u5b9a\u671f\u6aa2\u67e5<code>\/proc\/meminfo<\/code>\u7684Slab\u7d71\u8a08<\/td>\n<\/tr>\n<tr>\n<td>\u6620\u5c04\u512a\u5316<\/td>\n<td>\u7db2\u8def\u9a45\u52d5\u512a\u5148\u4f7f\u7528<code>kmalloc<\/code><br \/>\nGPU\u7de9\u885d\u5efa\u8b70<code>vmalloc<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>\u258b <a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u7279\u6b8a\u8003\u91cf<\/h3>\n<ul>\n<li>\n<p class=\"ds-markdown-paragraph\">\ud83c\udf10 \u9ad8\u5ef6\u9072\u7db2\u8def\u74b0\u5883\u9700\u589e\u5927TCP slab\u5feb\u53d6<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\ud83d\udd04 \u901a\u904e<code>mallopt(M_TRIM_THRESHOLD)<\/code>\u63a7\u5236C\u5eab\u8a18\u61b6\u9ad4\u56de\u6536<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p class=\"ds-markdown-paragraph\"><strong>\u6280\u8853\u7e3d\u7d50<\/strong>\uff1a\u638c\u63e1\u4e09\u5927\u6838\u5fc3\u6a5f\u5236\u2014\u2014<br \/>\n1\ufe0f\u20e3 Buddy-Slab\u4e8c\u7d1a\u5206\u914d<br \/>\n2\ufe0f\u20e3 kmalloc\/vmalloc\u6620\u5c04\u5dee\u7570<br \/>\n3\ufe0f\u20e3 Lazy\u5206\u914d\u6a5f\u5236<br \/>\n\u662f\u512a\u5316\u4f3a\u670d\u5668\u8a18\u61b6\u9ad4\u7ba1\u7406\u7684\u95dc\u9375\u3002\u91dd\u5c0d<a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u9019\u985e\u7db2\u8def\u654f\u611f\u74b0\u5883\uff0c\u61c9\u7279\u5225\u95dc\u6ce8\uff1a<\/p>\n<ul>\n<li>\n<p class=\"ds-markdown-paragraph\">\ud83d\udd0d TCP\u76f8\u95dcSlab\u914d\u7f6e<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u267b\ufe0f \u8a18\u61b6\u9ad4\u56de\u6536\u7b56\u7565\u8abf\u6821<\/p>\n<\/li>\n<\/ul>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u7269\u7406\u8a18\u61b6\u9ad4\u5206\u914d\u9ad4\u7cfb \u258b 1.&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4924],"tags":[],"class_list":["post-208370","post","type-post","status-publish","format-standard","hentry","category-setup-tutorials"],"_links":{"self":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/208370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/comments?post=208370"}],"version-history":[{"count":0,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/208370\/revisions"}],"wp:attachment":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/media?parent=208370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/categories?post=208370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/tags?post=208370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}