{"id":208369,"date":"2025-07-30T19:36:43","date_gmt":"2025-07-30T11:36:43","guid":{"rendered":"https:\/\/server.hk\/cnblog\/?p=208369"},"modified":"2025-07-30T19:36:43","modified_gmt":"2025-07-30T11:36:43","slug":"%f0%9f%93%96-linux-%e8%a8%98%e6%86%b6%e9%ab%94%e7%ae%a1%e7%90%86%e8%88%87%e5%88%86%e9%a0%81%e4%ba%a4%e6%8f%9b%e6%a9%9f%e5%88%b6","status":"publish","type":"post","link":"https:\/\/server.hk\/cnblog\/208369\/","title":{"rendered":"\ud83d\udcd6 Linux \u8a18\u61b6\u9ad4\u7ba1\u7406\u8207\u5206\u9801\u4ea4\u63db\u6a5f\u5236"},"content":{"rendered":"<p>## \u5f15\u8a00<br \/>\n\u5728 Linux \u7cfb\u7d71\u4e2d\uff0c\u8a18\u61b6\u9ad4\u7ba1\u7406\u662f\u7cfb\u7d71\u6548\u80fd\u8abf\u6821\u7684\u6838\u5fc3\u74b0\u7bc0\u3002\u7121\u8ad6\u662f\u904b\u884c\u65bc\u9999\u6e2f\u4f3a\u670d\u5668\u7684\u9ad8\u8ca0\u8f09\u61c9\u7528\uff0c\u9084\u662f\u8f15\u91cf\u7d1a\u5d4c\u5165\u5f0f\u8a2d\u5099\uff0c**\u8a18\u61b6\u9ad4\u8207\u78c1\u789f\u9593\u7684\u5206\u9801\u4ea4\u63db\u6a5f\u5236**\u90fd\u81f3\u95dc\u91cd\u8981\u3002\u672c\u6559\u5b78\u5c07\u5f9e\u4e09\u5927\u9762\u5411\u6df1\u5165\u89e3\u6790\uff1a<br \/>\n1. \u5206\u9801\u985e\u578b<br \/>\n2. \u4ea4\u63db\u884c\u70ba<br \/>\n3. \u5feb\u53d6\u6a5f\u5236<br \/>\n\u5e6b\u52a9\u958b\u767c\u8005\u512a\u5316<a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u4e0a\u7684\u61c9\u7528\u7a0b\u5f0f\u6548\u80fd\u3002<\/p>\n<p>&#8212;<\/p>\n<p>## \u4e00\u3001\u5206\u9801\u985e\u578b\u8207\u8a18\u61b6\u9ad4\u5206\u914d<br \/>\nLinux \u5c07\u8a18\u61b6\u9ad4\u5206\u9801\u5206\u70ba\u5169\u5927\u985e\u5225\uff1a<\/p>\n<p>### 1. \u6a94\u6848\u80cc\u666f\u5206\u9801\uff08File-backed Pages\uff09<br \/>\n| \u7279\u6027 | \u8aaa\u660e |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| **\u95dc\u806f\u5c0d\u8c61** | \u76f4\u63a5\u95dc\u806f\u78c1\u789f\u6a94\u6848\uff08\u5982\uff1a\u53ef\u57f7\u884c\u6a94\u7a0b\u5f0f\u78bc\u3001\u900f\u904e `read\/write` \u6216 `mmap` \u64cd\u4f5c\u7684\u6587\u4ef6\uff09 |<br \/>\n| **\u5132\u5b58\u4f4d\u7f6e** | \u5b58\u653e\u65bc **\u9801\u9762\u5feb\u53d6\uff08Page Cache\uff09** \u4e2d |<br \/>\n| **\u8a18\u61b6\u9ad4\u91cb\u653e\u6a5f\u5236** | \u8a18\u61b6\u9ad4\u4e0d\u8db3\u6642\uff0c\u5167\u5bb9\u76f4\u63a5\u5beb\u56de\u5c0d\u61c9\u78c1\u789f\u6a94\u6848 |<br \/>\n| **\u6838\u5fc3\u4f5c\u7528** | \u4f5c\u70ba\u8a18\u61b6\u9ad4\u8207\u78c1\u789f\u9593\u7684\u7de9\u885d\u5340 |<\/p>\n<p>### 2. \u533f\u540d\u5206\u9801\uff08Anonymous Pages\uff09<br \/>\n| \u7279\u6027 | \u8aaa\u660e |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| **\u95dc\u806f\u5c0d\u8c61** | \u7121\u5c0d\u61c9\u78c1\u789f\u6a94\u6848\uff08\u5982\uff1a\u884c\u7a0b\u7684\u5806\u7a4d Heap\u3001\u5806\u758a Stack\u3001\u5beb\u5165\u6642\u8907\u88fd CoW \u5f8c\u7684\u8cc7\u6599\u6bb5\uff09 |<br \/>\n| **\u8a18\u61b6\u9ad4\u91cb\u653e\u6a5f\u5236** | \u8a18\u61b6\u9ad4\u4e0d\u8db3\u6642\uff0c\u4ea4\u63db\u81f3 **Swap \u5206\u5272\u5340** \u6216 **Swap \u6a94\u6848** |<br \/>\n| **\u4f3a\u670d\u5668\u61c9\u7528** | \u5408\u7406\u914d\u7f6e Swap \u53ef\u7de9\u89e3\u8a18\u61b6\u9ad4\u58d3\u529b\uff0c\u63d0\u5347\u7cfb\u7d71\u7a69\u5b9a\u6027 |<\/p>\n<p>&#8212;<\/p>\n<p>## \u4e8c\u3001\u6a94\u6848\u8b80\u5beb\u8207\u9801\u9762\u5feb\u53d6\u7684\u4ea4\u4e92<br \/>\nLinux \u900f\u904e\u5169\u7a2e\u6a5f\u5236\u8655\u7406\u6a94\u6848 I\/O\uff0c\u5747\u4f9d\u8cf4\u9801\u9762\u5feb\u53d6\uff1a<\/p>\n<p>### \u25b6\ufe0f read\/write \u65b9\u5f0f<br \/>\n&#8220;`mermaid<br \/>\ngraph LR<br \/>\nA[\u61c9\u7528\u7a0b\u5f0f\u547c\u53eb read] &#8211;&gt; B[\u6a94\u6848\u8f09\u5165\u9801\u9762\u5feb\u53d6]<br \/>\nB &#8211;&gt; C[\u8cc7\u6599\u8907\u88fd\u5230\u4f7f\u7528\u8005\u7a7a\u9593\u7de9\u885d\u5340]<br \/>\nD[\u61c9\u7528\u7a0b\u5f0f\u547c\u53eb write] &#8211;&gt; E[\u8cc7\u6599\u5beb\u5165\u9801\u9762\u5feb\u53d6]<br \/>\nE &#8211;&gt; F[\u7570\u6b65\u540c\u6b65\u81f3\u78c1\u789f]<br \/>\n&#8220;`<br \/>\n&#8211; **\u512a\u52e2**\uff1a\u6e1b\u5c11\u76f4\u63a5\u78c1\u789f I\/O<br \/>\n&#8211; **\u9069\u7528\u5834\u666f**\uff1a\u8cc7\u6599\u5eab\u3001Web \u61c9\u7528\u7b49\u4f3a\u670d\u5668\u5e38\u898b\u8ca0\u8f09<\/p>\n<p>### \u25b6\ufe0f mmap \u65b9\u5f0f<br \/>\n&#8220;`mermaid<br \/>\ngraph LR<br \/>\nA[\u6a94\u6848\u6620\u5c04\u81f3\u884c\u7a0b\u865b\u64ec\u4f4d\u5740\u7a7a\u9593] &#8211;&gt; B[\u61c9\u7528\u7a0b\u5f0f\u76f4\u63a5\u64cd\u4f5c\u8a18\u61b6\u9ad4]<br \/>\nB &#8211;&gt; C[\u9801\u9762\u5feb\u53d6\u7dad\u8b77\u8a18\u61b6\u9ad4-\u78c1\u789f\u6620\u5c04]<br \/>\n&#8220;`<br \/>\n&#8211; **\u6838\u5fc3\u512a\u52e2**\uff1a\u907f\u514d\u6838\u5fc3\u8207\u4f7f\u7528\u8005\u7a7a\u9593\u7684\u8cc7\u6599\u8907\u88fd<br \/>\n&#8211; **\u9ad8\u6548\u5834\u666f**\uff1a<a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u4e0a\u7684\u5373\u6642\u8cc7\u6599\u8655\u7406\u61c9\u7528<\/p>\n<p>&#8212;<\/p>\n<p>## \u4e09\u3001\u5206\u9801\u4ea4\u63db\u8207\u6548\u80fd\u8abf\u6821<br \/>\n\u7576\u8a18\u61b6\u9ad4\u4e0d\u8db3\u6642\uff0cLinux \u555f\u52d5\u5206\u9801\u4ea4\u63db\u6a5f\u5236\uff08Swapping\uff09\uff1a<\/p>\n<p>### 1. \u5206\u9801\u66ff\u63db\u8207 LRU \u6f14\u7b97\u6cd5<br \/>\n&#8211; **\u6c7a\u7b56\u6a5f\u5236**\uff1a\u63a1\u7528 **\u6700\u8fd1\u6700\u5c11\u4f7f\u7528\uff08LRU\uff09** \u6f14\u7b97\u6cd5\u8a55\u4f30\u5206\u9801\u4f7f\u7528\u983b\u7387<br \/>\n&#8211; **\u4ea4\u63db\u898f\u5247**\uff1a<br \/>\n&#8211; \u6a94\u6848\u80cc\u666f\u5206\u9801 \u2192 \u5beb\u56de\u539f\u59cb\u6a94\u6848<br \/>\n&#8211; \u533f\u540d\u5206\u9801 \u2192 \u5beb\u5165 Swap \u7a7a\u9593<br \/>\n&#8211; **\u8abf\u6821\u53c3\u6578**\uff1a<br \/>\n&#8220;`bash<br \/>\n# \u8abf\u6574\u533f\u540d\u5206\u9801\u8207\u6a94\u6848\u5206\u9801\u56de\u6536\u512a\u5148\u7d1a\uff08\u9810\u8a2d\u503c=60\uff09<br \/>\necho 10 &gt; \/proc\/sys\/vm\/swappiness # \u964d\u4f4e\u503c\u512a\u5148\u56de\u6536\u9801\u9762\u5feb\u53d6<br \/>\n&#8220;`<\/p>\n<p>### 2. Swap \u7a7a\u9593\u985e\u578b\u5c0d\u6bd4<br \/>\n| \u985e\u578b | \u904b\u4f5c\u539f\u7406 | \u9069\u7528\u5834\u666f | \u6548\u80fd\u5f71\u97ff |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br \/>\n| **Swap \u5206\u5272\u5340** | \u533f\u540d\u5206\u9801\u5beb\u5165\u78c1\u789f\u5c08\u7528\u7a7a\u9593 | \u901a\u7528\u4f3a\u670d\u5668\u74b0\u5883 | \u78c1\u789f I\/O \u6709\u5ef6\u9072 |<br \/>\n| **zRAM** | \u5728\u8a18\u61b6\u9ad4\u5efa\u7acb\u58d3\u7e2e\u4ea4\u63db\u7a7a\u9593 | \u5d4c\u5165\u5f0f\u7cfb\u7d71\/\u8a18\u61b6\u9ad4\u53d7\u9650\u7684\u4f3a\u670d\u5668 | \u6e1b\u5c11\u78c1\u789f I\/O \u63d0\u5347\u6548\u80fd |<\/p>\n<p>### 3. \u9801\u9762\u5feb\u53d6\u6548\u80fd\u5be6\u8b49<br \/>\n&#8220;`bash<br \/>\n# \u5be6\u9a57\u6b65\u9a5f\uff1a\u6bd4\u8f03\u5feb\u53d6\u6e05\u9664\u524d\u5f8c\u7684\u57f7\u884c\u6548\u80fd<br \/>\necho 3 &gt; \/proc\/sys\/vm\/drop_caches # \u6e05\u9664\u9801\u9762\u5feb\u53d6<br \/>\ntime python hello.py # \u9996\u6b21\u57f7\u884c\uff08\u7121\u5feb\u53d6\uff09<br \/>\ntime python hello.py # \u4e8c\u6b21\u57f7\u884c\uff08\u6709\u5feb\u53d6\uff09<br \/>\n&#8220;`<br \/>\n&#8211; **\u7d50\u679c\u5c0d\u6bd4**\uff1a<br \/>\n&#8211; \u9996\u6b21\u57f7\u884c\uff1a\u9ad8 I\/O \u958b\u92b7\uff0c\u8017\u6642\u9577\uff08\u9700\u5f9e\u78c1\u789f\u8f09\u5165\uff09<br \/>\n&#8211; \u4e8c\u6b21\u57f7\u884c\uff1a\u4f4e I\/O \u958b\u92b7\uff0c\u8017\u6642\u77ed\uff08\u76f4\u63a5\u5b58\u53d6\u5feb\u53d6\uff09<\/p>\n<p>&#8212;<\/p>\n<p>## \u56db\u3001\u8a18\u61b6\u9ad4\u76e3\u63a7\u8207\u8abf\u6821\u7b56\u7565<br \/>\n### \u25b6\ufe0f \u76e3\u63a7\u6307\u4ee4\u7bc4\u4f8b<br \/>\n&#8220;`bash<br \/>\n$ free -h<br \/>\ntotal used free shared buff\/cache available<br \/>\nMem: 48G 1.6G 46G 140M 640M 46G<br \/>\nSwap: 4.0G 0B 4.0G<br \/>\n&#8220;`<\/p>\n<p>### \u25b6\ufe0f \u95dc\u9375\u6307\u6a19\u89e3\u6790<br \/>\n| \u6b04\u4f4d | \u6280\u8853\u8aaa\u660e |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|<br \/>\n| **buff\/cache** | \u5305\u542b\u9801\u9762\u5feb\u53d6\uff08\u6a94\u6848\u7cfb\u7d71\u52a0\u901f\uff09\u8207\u7de9\u885d\u5340\uff08\u88f8\u5206\u5272\u5340\u5b58\u53d6\u52a0\u901f\uff09 |<br \/>\n| **available** | \u61c9\u7528\u7a0b\u5f0f\u5be6\u969b\u53ef\u7528\u8a18\u61b6\u9ad4\uff08\u542b\u53ef\u56de\u6536\u5feb\u53d6\uff09\uff0c\u6bd4 free \u6b04\u4f4d\u66f4\u5177\u53c3\u8003\u50f9\u503c |<\/p>\n<p>&gt; **\u4f3a\u670d\u5668\u904b\u7dad\u5efa\u8b70**\uff1a\u9ad8\u4f75\u767c\u5834\u666f\u9700\u5b9a\u671f\u76e3\u63a7\uff0c\u907f\u514d\u5206\u9801\u4ea4\u63db\u9020\u6210\u7684\u6548\u80fd\u74f6\u9838<\/p>\n<p>&#8212;<\/p>\n<p>## \u4e94\u3001\u5be6\u6230\u6848\u4f8b\uff1aWeb \u4f3a\u670d\u5668\u6548\u80fd\u8abf\u6821<br \/>\n### \u554f\u984c\u60c5\u5883<br \/>\n\u983b\u7e41\u5206\u9801\u4ea4\u63db\u5c0e\u81f4 Web \u4f3a\u670d\u5668\u56de\u61c9\u5ef6\u9072<\/p>\n<p>### \u512a\u5316\u4e09\u90e8\u66f2<br \/>\n1. **\u8a3a\u65b7\u8a18\u61b6\u9ad4\u5206\u4f48**<br \/>\n&#8220;`bash<br \/>\npidof nginx # \u67e5\u8a62\u884c\u7a0b ID<br \/>\ncat \/proc\/&lt;PID&gt;\/smaps | grep -i swap # \u5206\u6790\u533f\u540d\u5206\u9801\u4f54\u6bd4<br \/>\n&#8220;`<\/p>\n<p>2. **\u8abf\u6574 swappiness**<br \/>\n&#8220;`bash<br \/>\n# \u964d\u4f4e\u533f\u540d\u5206\u9801\u4ea4\u63db\u512a\u5148\u7d1a\uff08\u9069\u5408 I\/O \u5bc6\u96c6\u578b\u61c9\u7528\uff09<br \/>\nsysctl vm.swappiness=10<br \/>\n&#8220;`<\/p>\n<p>3. **\u555f\u7528 zRAM \u52a0\u901f**<br \/>\n&#8220;`bash<br \/>\n# \u555f\u7528\u8a18\u61b6\u9ad4\u58d3\u7e2e\u4ea4\u63db\uff08\u4f9d\u767c\u884c\u7248\u6307\u4ee4\u914d\u7f6e\uff09<br \/>\nmodprobe zram<br \/>\nzramctl &#8211;find &#8211;size 2048M<br \/>\n&#8220;`<\/p>\n<h2>\u7e3d\u7d50\uff1a\u95dc\u9375\u6548\u80fd\u512a\u5316\u539f\u5247<\/h2>\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\">\n<div class=\"ds-segmented _81e8954\" role=\"tablist\">\n<div class=\"ds-segmented-button\" tabindex=\"0\" role=\"tab\" aria-selected=\"false\">\n<div class=\"ds-segmented-button__shadow\" aria-hidden=\"true\"><strong><a href=\"https:\/\/server.hk\/\">\u9999\u6e2f\u4f3a\u670d\u5668<\/a>\u8abf\u6821\u91cd\u9ede<\/strong>\uff1a<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<ol start=\"1\">\n<li>\n<p class=\"ds-markdown-paragraph\">\u7406\u89e3\u6a94\u6848\u80cc\u666f\u5206\u9801\u8207\u533f\u540d\u5206\u9801\u4ea4\u63db\u5dee\u7570<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u6839\u64da\u61c9\u7528\u985e\u578b\u9078\u64c7\u00a0<code>read\/write<\/code>\u00a0\u6216\u00a0<code>mmap<\/code>\u00a0I\/O \u6a21\u5f0f<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u900f\u904e\u00a0<code>swappiness<\/code>\u00a0\u5fae\u8abf\u5206\u9801\u56de\u6536\u7b56\u7565<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u8a18\u61b6\u9ad4\u53d7\u9650\u6642\u555f\u7528 zRAM \u964d\u4f4e I\/O \u5ef6\u9072<\/p>\n<\/li>\n<li>\n<p class=\"ds-markdown-paragraph\">\u5b9a\u671f\u76e3\u63a7\u00a0<code>available<\/code>\u00a0\u8a18\u61b6\u9ad4\u6307\u6a19<\/p>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>## \u5f15\u8a00 \u5728 Linux \u7cfb\u7d71&#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-208369","post","type-post","status-publish","format-standard","hentry","category-setup-tutorials"],"_links":{"self":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/208369","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=208369"}],"version-history":[{"count":0,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/208369\/revisions"}],"wp:attachment":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/media?parent=208369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/categories?post=208369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/tags?post=208369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}