{"id":88432,"date":"2026-08-01T07:48:45","date_gmt":"2026-07-31T23:48:45","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/88432.html"},"modified":"2026-08-01T07:48:45","modified_gmt":"2026-07-31T23:48:45","slug":"linux%e5%91%bd%e4%bb%a4-slabtop%ef%bc%88%e5%ae%9e%e6%97%b6%e6%98%be%e7%a4%ba%e5%86%85%e6%a0%b8-slab-%e7%bc%93%e5%ad%98%e4%bf%a1%e6%81%af%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/88432.html","title":{"rendered":"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09"},"content":{"rendered":"<\/p>\n<h4>Linux\u547d\u4ee4-slabtop&#xff08;\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f&#xff09;<\/h4>\n<ul>\n<li>\n<ul>\n<li>&#x1f530; \u7b80\u4ecb<\/li>\n<li>&#x1f4d6; \u8bed\u6cd5<\/li>\n<li>\u2699\ufe0f \u9009\u9879<\/li>\n<li>&#x1f4a1; \u5b9e\u6218\u793a\u4f8b<\/li>\n<li>\n<ul>\n<li>\u793a\u4f8b 1&#xff1a;\u57fa\u672c slabtop<\/li>\n<li>\u793a\u4f8b 2&#xff1a;\u6309\u5bf9\u8c61\u6570\u6392\u5e8f<\/li>\n<li>\u793a\u4f8b 3&#xff1a;\u4e00\u6b21\u6027\u8f93\u51fa &#043; \u76d1\u63a7<\/li>\n<li>\u793a\u4f8b 4&#xff1a;\u8bca\u65ad\u5185\u6838\u5185\u5b58\u6cc4\u6f0f<\/li>\n<li>\u793a\u4f8b 5&#xff1a;\u5e38\u89c1 cache \u540d\u79f0\u8bc6\u522b<\/li>\n<li>\u793a\u4f8b 6&#xff1a;\u4e0e\u7528\u6237\u6001\u5185\u5b58\u5de5\u5177\u5bf9\u6bd4<\/li>\n<li>\u793a\u4f8b 7&#xff1a;\u6027\u80fd\u8c03\u4f18\u573a\u666f<\/li>\n<li>\u793a\u4f8b 8&#xff1a;\u81ea\u52a8\u5316\u5206\u6790\u4e0e\u811a\u672c<\/li>\n<\/ul>\n<\/li>\n<li>\u26a0\ufe0f \u6ce8\u610f\u4e8b\u9879<\/li>\n<li>&#x1f4dd; \u603b\u7ed3<\/li>\n<li>&#x1f4da; \u76f8\u5173\u547d\u4ee4<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u5feb\u901f\u53c2\u8003 slabtop \u662f \u5b9e\u65f6\u663e\u793a Linux \u5185\u6838 slab \u5206\u914d\u5668\u7f13\u5b58\u4f7f\u7528\u60c5\u51b5\u7684\u5de5\u5177&#xff0c;\u7c7b\u4f3c top \u4f46\u4e13\u95e8\u9488\u5bf9\u5185\u6838\u6001\u5185\u5b58&#xff08;slab \/ slub \/ slob \u4e09\u79cd\u5206\u914d\u5668\u4e4b\u4e00&#xff09;\u3002\u5b83\u663e\u793a\u5404\u79cd\u5185\u6838\u5bf9\u8c61\u7684\u7f13\u5b58\u547d\u4e2d\u7387\u3001\u5bf9\u8c61\u6570\u3001\u5360\u7528\u5185\u5b58&#xff0c;\u662f\u8bca\u65ad\u5185\u6838\u5185\u5b58\u6cc4\u6f0f\u3001\u5185\u5b58\u788e\u7247\u3001\u9a71\u52a8 bug \u7684\u6838\u5fc3\u5de5\u5177\u3002\u7528\u6237\u6001 top \u770b\u8fdb\u7a0b\u5185\u5b58&#xff0c;slabtop \u770b\u5185\u6838\u5185\u5b58\u3002<\/p>\n<hr \/>\n<h3>&#x1f530; \u7b80\u4ecb<\/h3>\n<table>\n<tr>\u9879\u76ee\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u547d\u4ee4\u5168\u79f0<\/td>\n<td>slab top<\/td>\n<\/tr>\n<tr>\n<td>\u6240\u5c5e\u5305<\/td>\n<td>procps-ng<\/td>\n<\/tr>\n<tr>\n<td>\u6570\u636e\u6e90<\/td>\n<td>\/proc\/slabinfo<\/td>\n<\/tr>\n<tr>\n<td>\u5de5\u4f5c\u6a21\u5f0f<\/td>\n<td>\u5b9e\u65f6\u5237\u65b0&#xff08;\u9ed8\u8ba4 3 \u79d2&#xff09;&#xff0c;\u6216\u4e00\u6b21\u6027\u8f93\u51fa<\/td>\n<\/tr>\n<tr>\n<td>\u7528\u9014<\/td>\n<td>\u8bca\u65ad\u5185\u6838\u6001\u5185\u5b58\u95ee\u9898<\/td>\n<\/tr>\n<tr>\n<td>\u6743\u9650<\/td>\n<td>\u9700\u8981 root&#xff08;\u90e8\u5206\u5185\u6838\u7248\u672c\u666e\u901a\u7528\u6237\u53ef\u89c1\u4f46\u4e0d\u5168&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u73b0\u4ee3\u66ff\u4ee3<\/td>\n<td>slabtop&#xff08;\u547d\u4ee4\u672c\u8eab&#xff09;cat \/proc\/slabinfo&#xff08;\u539f\u59cb\u6570\u636e&#xff09;perf \/ bpftool&#xff08;\u9ad8\u7ea7\u8bca\u65ad&#xff09;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>slab \/ slub \/ slob \u4e09\u79cd\u5206\u914d\u5668&#xff1a;<\/p>\n<table>\n<tr>\u5206\u914d\u5668\u7279\u70b9\u7528\u9014<\/tr>\n<tbody>\n<tr>\n<td>slab<\/td>\n<td>\u539f\u59cb\u5b9e\u73b0&#xff0c;\u590d\u6742<\/td>\n<td>\u65e9\u671f\u5185\u6838<\/td>\n<\/tr>\n<tr>\n<td>slub<\/td>\n<td>\u7b80\u5316\u7248&#xff0c;Linux \u9ed8\u8ba4<\/td>\n<td>\u5927\u591a\u6570\u53d1\u884c\u7248<\/td>\n<\/tr>\n<tr>\n<td>slob<\/td>\n<td>\u6781\u7b80\u7248&#xff08;Simple List of Blocks&#xff09;<\/td>\n<td>\u5d4c\u5165\u5f0f\u3001\u5c0f\u5185\u5b58<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>slab \u662f\u4ec0\u4e48&#xff1a;<\/p>\n<ul>\n<li>Linux \u5185\u6838\u7684\u5c0f\u5bf9\u8c61\u5185\u5b58\u5206\u914d\u5668&#xff08;\u66ff\u4ee3\u9891\u7e41\u7684 kmalloc\/kfree&#xff09;<\/li>\n<li>\u9884\u5148\u4e3a\u5e38\u89c1\u5bf9\u8c61&#xff08;task_struct\u3001inode\u3001dentry\u3001buffer_head \u7b49&#xff09;\u5efa\u7acb\u5bf9\u8c61\u6c60&#xff08;cache&#xff09;<\/li>\n<li>\u7533\u8bf7\u5bf9\u8c61\u65f6\u4ece cache \u53d6&#xff0c;\u907f\u514d\u53cd\u590d\u521b\u5efa\/\u9500\u6bc1<\/li>\n<li>\u89e3\u51b3\u5185\u5b58\u788e\u7247\u95ee\u9898<\/li>\n<\/ul>\n<hr \/>\n<h3>&#x1f4d6; \u8bed\u6cd5<\/h3>\n<p>slabtop <span class=\"token punctuation\">[<\/span>\u9009\u9879<span class=\"token punctuation\">]<\/span><\/p>\n<hr \/>\n<h3>\u2699\ufe0f \u9009\u9879<\/h3>\n<table>\n<tr>\u9009\u9879\u7b80\u5199\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>&#8211;delay&#061;N<\/td>\n<td>-d N<\/td>\n<td>\u5237\u65b0\u95f4\u9694&#xff08;\u79d2&#xff09;&#xff0c;\u9ed8\u8ba4 3<\/td>\n<\/tr>\n<tr>\n<td>&#8211;sort&#061;SORT<\/td>\n<td>-s SORT<\/td>\n<td>\u6392\u5e8f\u5b57\u6bb5&#xff08;\u89c1\u4e0b\u8868&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>&#8211;once<\/td>\n<td>-o<\/td>\n<td>\u4e00\u6b21\u6027\u8f93\u51fa&#xff08;\u4e0d\u5237\u65b0&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>&#8211;version<\/td>\n<td>-V<\/td>\n<td>\u7248\u672c<\/td>\n<\/tr>\n<tr>\n<td>&#8211;help<\/td>\n<td>-?<\/td>\n<td>\u5e2e\u52a9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6392\u5e8f\u5b57\u6bb5&#xff08;-s \u53ef\u9009&#xff09;&#xff1a;<\/p>\n<table>\n<tr>\u5b57\u6bb5\u542b\u4e49<\/tr>\n<tbody>\n<tr>\n<td>a<\/td>\n<td>ACTIVE \u5bf9\u8c61\u6570<\/td>\n<\/tr>\n<tr>\n<td>b<\/td>\n<td>\u5bf9\u8c61\u6570\/\u9875&#xff08;OBJ\/SLAB&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>c<\/td>\n<td>\u7f13\u5b58\u5927\u5c0f&#xff08;CACHE SIZE&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>l<\/td>\n<td>\u547d\u4e2d\u6b21\u6570&#xff08;HITS&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>n<\/td>\n<td>\u540d\u79f0&#xff08;NAME&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>o<\/td>\n<td>\u6d3b\u8dc3\u5bf9\u8c61\u6570 \u00d7 \u5bf9\u8c61\u5927\u5c0f&#xff08;\u6d3b\u8dc3\u5185\u5b58&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>p<\/td>\n<td>\u6bcf\u9875\u5bf9\u8c61\u6570 \/ \u6bcf slab<\/td>\n<\/tr>\n<tr>\n<td>s<\/td>\n<td>\u5bf9\u8c61\u5927\u5c0f&#xff08;OBJ SIZE&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>u<\/td>\n<td>\u7f13\u5b58\u4f7f\u7528\u7387<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>&#x1f4a1; \u5b9e\u6218\u793a\u4f8b<\/h3>\n<h4>\u793a\u4f8b 1&#xff1a;\u57fa\u672c slabtop<\/h4>\n<p><span class=\"token comment\"># \u5b9e\u65f6\u5237\u65b0&#xff08;\u9ed8\u8ba4 3 \u79d2&#xff09;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop<\/p>\n<p> Active \/ Total Objects <span class=\"token punctuation\">(<\/span>% used<span class=\"token punctuation\">)<\/span>    <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">678901<\/span> \/ <span class=\"token number\">1234567<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">55.0<\/span>%<span class=\"token punctuation\">)<\/span><br \/>\n Active \/ Total Slabs <span class=\"token punctuation\">(<\/span>% used<span class=\"token punctuation\">)<\/span>      <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">23456<\/span> \/ <span class=\"token number\">34567<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">67.9<\/span>%<span class=\"token punctuation\">)<\/span><br \/>\n Active \/ Total Caches <span class=\"token punctuation\">(<\/span>% used<span class=\"token punctuation\">)<\/span>     <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">98<\/span> \/ <span class=\"token number\">142<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">69.0<\/span>%<span class=\"token punctuation\">)<\/span><br \/>\n  Total \/ Used Memory                <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">256789<\/span> \/ <span class=\"token number\">145678<\/span><\/p>\n<p>OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ\/SLAB CACHE SIZE NAME<br \/>\n<span class=\"token number\">45678<\/span> <span class=\"token number\">34567<\/span>  <span class=\"token number\">75<\/span>%    <span class=\"token number\">0<\/span>.50K    <span class=\"token number\">1234<\/span>      <span class=\"token number\">37<\/span>       49360K task_struct<br \/>\n<span class=\"token number\">12345<\/span> <span class=\"token number\">10987<\/span>  <span class=\"token number\">89<\/span>%    <span class=\"token number\">0<\/span>.13K     <span class=\"token number\">412<\/span>      <span class=\"token number\">30<\/span>       16480K dentry<br \/>\n<span class=\"token number\">12345<\/span> <span class=\"token number\">10000<\/span>  <span class=\"token number\">81<\/span>%    <span class=\"token number\">0<\/span>.06K     <span class=\"token number\">200<\/span>      <span class=\"token number\">62<\/span>       16000K kmalloc-64<br \/>\n<span class=\"token number\">9876<\/span>  <span class=\"token number\">7890<\/span>   <span class=\"token number\">80<\/span>%    <span class=\"token number\">1<\/span>.00K    <span class=\"token number\">2465<\/span>       <span class=\"token number\">4<\/span>       39440K inode<br \/>\n<span class=\"token number\">8765<\/span>  <span class=\"token number\">7000<\/span>   <span class=\"token number\">79<\/span>%    <span class=\"token number\">0<\/span>.25K     <span class=\"token number\">567<\/span>      <span class=\"token number\">15<\/span>       22680K kmalloc-256<br \/>\n<span class=\"token punctuation\">..<\/span>.<\/p>\n<p>\u5b57\u6bb5\u8be6\u89e3&#xff1a;<\/p>\n<table>\n<tr>\u5b57\u6bb5\u542b\u4e49<\/tr>\n<tbody>\n<tr>\n<td>OBJS<\/td>\n<td>\u8be5 cache \u4e2d\u603b\u5bf9\u8c61\u6570<\/td>\n<\/tr>\n<tr>\n<td>ACTIVE<\/td>\n<td>\u6b63\u5728\u4f7f\u7528\u7684\u5bf9\u8c61\u6570<\/td>\n<\/tr>\n<tr>\n<td>USE<\/td>\n<td>\u4f7f\u7528\u7387&#xff08;ACTIVE\/OBJS %&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>OBJ SIZE<\/td>\n<td>\u5355\u5bf9\u8c61\u5927\u5c0f<\/td>\n<\/tr>\n<tr>\n<td>SLABS<\/td>\n<td>\u5206\u914d\u7684 slab \u9875\u6570<\/td>\n<\/tr>\n<tr>\n<td>OBJ\/SLAB<\/td>\n<td>\u6bcf\u4e2a slab \u542b\u591a\u5c11\u5bf9\u8c61<\/td>\n<\/tr>\n<tr>\n<td>CACHE SIZE<\/td>\n<td>\u8be5 cache \u5360\u7528\u7684\u603b\u5185\u5b58<\/td>\n<\/tr>\n<tr>\n<td>NAME<\/td>\n<td>cache \u540d&#xff08;task_struct \u7b49&#xff09;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5934\u90e8\u7edf\u8ba1&#xff1a;<\/p>\n<table>\n<tr>\u884c\u542b\u4e49<\/tr>\n<tbody>\n<tr>\n<td>Active \/ Total Objects<\/td>\n<td>\u6d3b\u8dc3\u5bf9\u8c61 \/ \u603b\u5bf9\u8c61<\/td>\n<\/tr>\n<tr>\n<td>Active \/ Total Slabs<\/td>\n<td>\u6d3b\u8dc3 slab \/ \u603b slab<\/td>\n<\/tr>\n<tr>\n<td>Active \/ Total Caches<\/td>\n<td>\u6d3b\u8dc3 cache \/ \u603b cache<\/td>\n<\/tr>\n<tr>\n<td>Total \/ Used Memory<\/td>\n<td>\u5185\u5b58\u603b\u91cf \/ \u4f7f\u7528\u91cf<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u793a\u4f8b 2&#xff1a;\u6309\u5bf9\u8c61\u6570\u6392\u5e8f<\/h4>\n<p><span class=\"token comment\"># \u6309 OBJS \u6392\u5e8f&#xff08;\u770b\u54ea\u4e2a cache \u5bf9\u8c61\u6700\u591a&#xff09;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-s<\/span> a<\/p>\n<p><span class=\"token comment\"># \u6309 CACHE SIZE \u6392\u5e8f&#xff08;\u770b\u54ea\u4e2a cache \u5360\u5185\u5b58\u6700\u591a&#xff09;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-s<\/span> c<\/p>\n<p><span class=\"token comment\"># \u6309 NAME \u6392\u5e8f<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-s<\/span> n<\/p>\n<p><span class=\"token comment\"># \u6309\u5bf9\u8c61\u5927\u5c0f\u6392\u5e8f<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-s<\/span> s<\/p>\n<p><span class=\"token comment\"># \u5b9e\u6218&#xff1a;\u627e\u51fa\u6700\u5927 cache<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-s<\/span> c <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-20<\/span><br \/>\n Active \/ Total Objects <span class=\"token punctuation\">(<\/span>% used<span class=\"token punctuation\">)<\/span>    <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">678901<\/span> \/ <span class=\"token number\">1234567<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">55.0<\/span>%<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token punctuation\">..<\/span>.<br \/>\nOBJS ACTIVE  USE OBJ SIZE  SLABS OBJ\/SLAB CACHE SIZE NAME<br \/>\n  <span class=\"token number\">1024000<\/span>  <span class=\"token number\">800000<\/span>  <span class=\"token number\">78<\/span>%    <span class=\"token number\">0<\/span>.50K    <span class=\"token number\">32768<\/span>      <span class=\"token number\">32<\/span>      4096000K dentry<br \/>\n  <span class=\"token number\">500000<\/span>  <span class=\"token number\">400000<\/span>  <span class=\"token number\">80<\/span>%    <span class=\"token number\">1<\/span>.00K    <span class=\"token number\">12500<\/span>      <span class=\"token number\">40<\/span>      2000000K inode<br \/>\n  <span class=\"token number\">200000<\/span>  <span class=\"token number\">150000<\/span>  <span class=\"token number\">75<\/span>%    <span class=\"token number\">0<\/span>.25K    <span class=\"token number\">2000<\/span>      <span class=\"token number\">100<\/span>      1600000K kmalloc-256<br \/>\n  <span class=\"token punctuation\">..<\/span>.<br \/>\n<span class=\"token comment\"># \u91cd\u70b9\u5173\u6ce8&#xff1a;CACHE SIZE \u5927\u7684 &#061; \u5360\u7528\u5185\u5b58\u591a<\/span><\/p>\n<h4>\u793a\u4f8b 3&#xff1a;\u4e00\u6b21\u6027\u8f93\u51fa &#043; \u76d1\u63a7<\/h4>\n<p><span class=\"token comment\"># \u4e00\u6b21\u6027\u8f93\u51fa&#xff08;\u4e0d\u5237\u65b0&#xff09;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span><br \/>\n<span class=\"token comment\"># \u9002\u5408\u811a\u672c\u5904\u7406<\/span><\/p>\n<p><span class=\"token comment\"># \u76d1\u63a7 5 \u79d2\u8f93\u51fa<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-d<\/span> <span class=\"token number\">1<\/span> <span class=\"token parameter variable\">-o<\/span><br \/>\n<span class=\"token comment\"># \u6bcf\u79d2\u5237\u65b0\u4e00\u6b21<\/span><\/p>\n<p><span class=\"token comment\"># \u5f55\u5236\u5230\u6587\u4ef6\u505a\u8d8b\u52bf\u5206\u6790<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-d<\/span> <span class=\"token number\">5<\/span> <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">&gt;&gt;<\/span> \/var\/log\/slab.log <span class=\"token operator\">&amp;<\/span><br \/>\n<span class=\"token comment\"># \u6301\u7eed 5 \u79d2\u95f4\u9694\u8f93\u51fa<\/span><\/p>\n<p><span class=\"token comment\"># \u914d\u5408 grep<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;dentry|inode|task_struct&#034;<\/span><br \/>\n OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ\/SLAB CACHE SIZE NAME<br \/>\n <span class=\"token number\">45678<\/span> <span class=\"token number\">34567<\/span>  <span class=\"token number\">75<\/span>%    <span class=\"token number\">0<\/span>.50K    <span class=\"token number\">1234<\/span>      <span class=\"token number\">37<\/span>       49360K task_struct<br \/>\n<span class=\"token number\">12345<\/span> <span class=\"token number\">10987<\/span>  <span class=\"token number\">89<\/span>%    <span class=\"token number\">0<\/span>.13K     <span class=\"token number\">412<\/span>      <span class=\"token number\">30<\/span>       16480K dentry<br \/>\n <span class=\"token number\">9876<\/span>  <span class=\"token number\">7890<\/span>   <span class=\"token number\">80<\/span>%    <span class=\"token number\">1<\/span>.00K    <span class=\"token number\">2465<\/span>       <span class=\"token number\">4<\/span>       39440K inode<\/p>\n<h4>\u793a\u4f8b 4&#xff1a;\u8bca\u65ad\u5185\u6838\u5185\u5b58\u6cc4\u6f0f<\/h4>\n<p><span class=\"token comment\"># \u573a\u666f&#xff1a;\u7cfb\u7edf\u5185\u5b58\u6301\u7eed\u589e\u957f&#xff0c;\u6000\u7591\u5185\u6838\u6cc4\u6f0f<\/span><\/p>\n<p><span class=\"token comment\"># 1. \u7b2c\u4e00\u6b21\u8bb0\u5f55<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">&gt;<\/span> \/tmp\/slab_1.txt<br \/>\n$ <span class=\"token function\">date<\/span><br \/>\n<span class=\"token number\">2024<\/span>-01-15 <span class=\"token number\">14<\/span>:30:00<\/p>\n<p><span class=\"token comment\"># 2. \u7b49\u5f85 5 \u5206\u949f<\/span><br \/>\n$ <span class=\"token function\">sleep<\/span> <span class=\"token number\">300<\/span><\/p>\n<p><span class=\"token comment\"># 3. \u7b2c\u4e8c\u6b21\u8bb0\u5f55<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">&gt;<\/span> \/tmp\/slab_2.txt<br \/>\n$ <span class=\"token function\">date<\/span><br \/>\n<span class=\"token number\">2024<\/span>-01-15 <span class=\"token number\">14<\/span>:35:00<\/p>\n<p><span class=\"token comment\"># 4. \u5bf9\u6bd4<\/span><br \/>\n$ <span class=\"token function\">diff<\/span> \/tmp\/slab_1.txt \/tmp\/slab_2.txt<br \/>\n<span class=\"token comment\"># \u627e\u51fa\u589e\u957f\u6700\u5feb\u7684 cache<\/span><br \/>\n<span class=\"token comment\"># \u4f8b\u5982&#xff1a;dentry \u6570\u91cf\u6301\u7eed\u589e\u957f &#061; \u6587\u4ef6\u7cfb\u7edf\u76f8\u5173\u9a71\u52a8\u6709\u95ee\u9898<\/span><br \/>\n<span class=\"token comment\"># \u4f8b\u5982&#xff1a;nf_conntrack \u6301\u7eed\u589e\u957f &#061; \u9632\u706b\u5899\u8fde\u63a5\u8868\u6cc4\u6f0f<\/span><br \/>\n<span class=\"token comment\"># \u4f8b\u5982&#xff1a;vm_area_struct \u6301\u7eed\u589e\u957f &#061; \u8fdb\u7a0b\u5185\u5b58\u6620\u5c04\u6cc4\u6f0f<\/span><\/p>\n<p><span class=\"token comment\"># 5. \u5b9e\u6218&#xff1a;\u81ea\u52a8\u5316\u76d1\u63a7<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/opt\/scripts\/slab_monitor.sh<br \/>\n<span class=\"token comment\">#!\/bin\/bash<\/span><br \/>\n<span class=\"token assign-left variable\">LOG<\/span><span class=\"token operator\">&#061;<\/span>\/var\/log\/slab_growth.log<br \/>\n<span class=\"token assign-left variable\">THRESHOLD<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">10000<\/span>   <span class=\"token comment\"># 5 \u5206\u949f\u589e\u957f\u9608\u503c<\/span><\/p>\n<p><span class=\"token assign-left variable\">prev_count<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">0<\/span><br \/>\n<span class=\"token assign-left variable\">prev_name<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">while<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">do<\/span><br \/>\n    <span class=\"token comment\"># \u53d6 cache \u4e2d\u6700\u5927 5 \u4e2a<\/span><br \/>\n    <span class=\"token assign-left variable\">output<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span>slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-7<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-5<\/span><span class=\"token variable\">)<\/span><\/span><br \/>\n    <span class=\"token comment\"># \u63d0\u53d6\u6700\u5927 cache<\/span><br \/>\n    <span class=\"token assign-left variable\">max<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$output<\/span>&#034;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-1<\/span><span class=\"token variable\">)<\/span><\/span><br \/>\n    <span class=\"token assign-left variable\">name<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$max<\/span>&#034;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;{print $NF}&#039;<\/span><span class=\"token variable\">)<\/span><\/span><br \/>\n    <span class=\"token assign-left variable\">objs<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$max<\/span>&#034;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;{print $1}&#039;<\/span><span class=\"token variable\">)<\/span><\/span><\/p>\n<p>    <span class=\"token comment\"># \u68c0\u6d4b\u589e\u957f<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">[<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$name<\/span>&#034;<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$prev_name<\/span>&#034;<\/span> <span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token punctuation\">[<\/span> <span class=\"token variable\"><span class=\"token variable\">$((<\/span>objs <span class=\"token operator\">&#8211;<\/span> prev_count<span class=\"token variable\">))<\/span><\/span> <span class=\"token parameter variable\">-gt<\/span> <span class=\"token variable\">$THRESHOLD<\/span> <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">then<\/span><br \/>\n        <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;[<span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token function\">date<\/span><span class=\"token variable\">)<\/span><\/span>] \u8b66\u544a: <span class=\"token variable\">$name<\/span> \u589e\u957f <span class=\"token variable\"><span class=\"token variable\">$((<\/span>objs <span class=\"token operator\">&#8211;<\/span> prev_count<span class=\"token variable\">))<\/span><\/span> \u4e2a\u5bf9\u8c61&#034;<\/span> <span class=\"token operator\">&gt;&gt;<\/span> <span class=\"token variable\">$LOG<\/span><br \/>\n        logger <span class=\"token parameter variable\">-p<\/span> kern.warning <span class=\"token string\">&#034;Slab cache <span class=\"token variable\">$name<\/span> growing: <span class=\"token variable\">$objs<\/span>&#034;<\/span><br \/>\n    <span class=\"token keyword\">fi<\/span><\/p>\n<p>    <span class=\"token assign-left variable\">prev_name<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\">$name<\/span><br \/>\n    <span class=\"token assign-left variable\">prev_count<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\">$objs<\/span><br \/>\n    <span class=\"token function\">sleep<\/span> <span class=\"token number\">300<\/span><br \/>\n<span class=\"token keyword\">done<\/span><\/p>\n<h4>\u793a\u4f8b 5&#xff1a;\u5e38\u89c1 cache \u540d\u79f0\u8bc6\u522b<\/h4>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 1. \u8fdb\u7a0b\u76f8\u5173 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;task_struct|signal|files_struct&#034;<\/span><br \/>\n<span class=\"token comment\"># task_struct: \u8fdb\u7a0b\u63cf\u8ff0\u7b26&#xff08;\u6bcf\u4e2a\u8fdb\u7a0b 1 \u4e2a&#xff09;<\/span><br \/>\n<span class=\"token comment\"># signal_struct: \u4fe1\u53f7\u7ed3\u6784<\/span><br \/>\n<span class=\"token comment\"># files_struct: \u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 2. \u6587\u4ef6\u7cfb\u7edf\u76f8\u5173 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;dentry|inode|buffer_head&#034;<\/span><br \/>\n<span class=\"token comment\"># dentry: \u76ee\u5f55\u9879&#xff08;**\u6700\u5e38\u89c1\u5927\u5bf9\u8c61**&#xff09;<\/span><br \/>\n<span class=\"token comment\"># inode: \u6587\u4ef6\u5143\u6570\u636e<\/span><br \/>\n<span class=\"token comment\"># buffer_head: \u6587\u4ef6\u9875\u7f13\u5b58<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 3. \u7f51\u7edc\u76f8\u5173 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;sk_buff|sock|nf_conn&#034;<\/span><br \/>\n<span class=\"token comment\"># sk_buff: \u7f51\u7edc\u6570\u636e\u5305&#xff08;**\u7f51\u7edc\u6027\u80fd\u5173\u952e**&#xff09;<\/span><br \/>\n<span class=\"token comment\"># sock: \u5957\u63a5\u5b57<\/span><br \/>\n<span class=\"token comment\"># nf_conn: netfilter \u8fde\u63a5\u8ffd\u8e2a<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 4. \u5185\u5b58\u7ba1\u7406 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;vm_area|page|mm_struct&#034;<\/span><br \/>\n<span class=\"token comment\"># vm_area_struct: \u8fdb\u7a0b\u7684\u865a\u62df\u5185\u5b58\u533a<\/span><br \/>\n<span class=\"token comment\"># page: \u5185\u6838\u9875\u5e27\u63cf\u8ff0\u7b26<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 5. \u9a71\u52a8\u76f8\u5173 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;scsi|usb|kvm&#034;<\/span><br \/>\n<span class=\"token comment\"># \u5404\u7c7b\u9a71\u52a8\u5bf9\u8c61<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u5b9e\u6218&#xff1a;dentry \u589e\u957f &#061; \u76ee\u5f55\u9879\u6cc4\u6f0f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-s<\/span> c <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-10<\/span><br \/>\n OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ\/SLAB CACHE SIZE NAME<br \/>\n <span class=\"token number\">1024000<\/span>  <span class=\"token number\">800000<\/span>  <span class=\"token number\">78<\/span>%    <span class=\"token number\">0<\/span>.13K   <span class=\"token number\">32768<\/span>      <span class=\"token number\">32<\/span>      4096K dentry<br \/>\n<span class=\"token comment\"># \u5982\u679c\u6301\u7eed\u589e\u957f&#xff1a;<\/span><br \/>\n<span class=\"token comment\"># 1. \u68c0\u67e5\u662f\u5426\u6709\u8fdb\u7a0b\u6301\u7eed\u6253\u5f00\/\u5173\u95ed\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># 2. \u68c0\u67e5 NFS \/ FUSE \u6302\u8f7d<\/span><br \/>\n<span class=\"token comment\"># 3. \u540c\u6b65\u68c0\u67e5 \/proc\/sys\/fs\/dentry-state<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/proc\/sys\/fs\/dentry-state<br \/>\n<span class=\"token number\">134567<\/span>  <span class=\"token number\">109876<\/span>  <span class=\"token number\">45<\/span> <span class=\"token number\">0<\/span>  <span class=\"token number\">0<\/span>  <span class=\"token number\">0<\/span><br \/>\n<span class=\"token comment\"># nr_dentry  \/  nr_unused  \/  age_limit  \/  &#8230;<\/span><\/p>\n<p><span class=\"token comment\"># \u624b\u52a8\u6e05\u7406<\/span><br \/>\n$ <span class=\"token builtin class-name\">echo<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">&gt;<\/span> \/proc\/sys\/vm\/drop_caches<br \/>\n<span class=\"token comment\"># \u91ca\u653e dentry &#043; inode cache<\/span><\/p>\n<h4>\u793a\u4f8b 6&#xff1a;\u4e0e\u7528\u6237\u6001\u5185\u5b58\u5de5\u5177\u5bf9\u6bd4<\/h4>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 1. \u7528\u6237\u6001 vs \u5185\u6838\u6001 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><\/p>\n<p><span class=\"token comment\"># \u7528\u6237\u6001&#xff1a;top \/ ps<\/span><br \/>\n$ <span class=\"token function\">top<\/span><br \/>\n<span class=\"token comment\"># \u5b57\u6bb5&#xff1a;VIRT&#xff08;\u865a\u62df&#xff09;\/ RES&#xff08;\u5b9e\u9645&#xff09;\/ SHR&#xff08;\u5171\u4eab&#xff09;<\/span><br \/>\n<span class=\"token comment\"># \u8fd9\u4e9b\u662f**\u8fdb\u7a0b**\u7684\u7528\u6237\u6001\u5185\u5b58<\/span><\/p>\n<p><span class=\"token comment\"># \u5185\u6838\u6001&#xff1a;slabtop<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop<br \/>\n<span class=\"token comment\"># \u5b57\u6bb5&#xff1a;OBJS \/ SLABS \/ CACHE SIZE<\/span><br \/>\n<span class=\"token comment\"># \u8fd9\u4e9b\u662f**\u5185\u6838\u5bf9\u8c61**\u7684\u5185\u5b58<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 2. \u5b8c\u6574\u5185\u5b58\u89c6\u56fe &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><\/p>\n<p><span class=\"token comment\"># \u603b\u89c8<\/span><br \/>\n$ <span class=\"token function\">free<\/span> <span class=\"token parameter variable\">-h<\/span><br \/>\n              total        used        <span class=\"token function\">free<\/span>      shared  buff\/cache   available<br \/>\nMem:           <span class=\"token number\">7<\/span>.7G        <span class=\"token number\">1<\/span>.2G        <span class=\"token number\">4<\/span>.0G        100M        <span class=\"token number\">2<\/span>.5G        <span class=\"token number\">6<\/span>.0G<br \/>\n<span class=\"token comment\"># total &#061; \u7269\u7406 RAM<\/span><br \/>\n<span class=\"token comment\"># used &#061; \u5df2\u7528&#xff08;\u7528\u6237 &#043; \u5185\u6838 &#043; \u7f13\u5b58&#xff09;<\/span><br \/>\n<span class=\"token comment\"># buff\/cache &#061; \u5185\u6838\u9875\u7f13\u5b58&#xff08;**\u4f1a\u81ea\u52a8\u56de\u6536**&#xff09;<\/span><br \/>\n<span class=\"token comment\"># available &#061; **\u771f\u6b63\u53ef\u7528**&#xff08;\u542b\u53ef\u56de\u6536\u7f13\u5b58&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u5185\u6838 slab \u5360\u591a\u5c11&#xff1f;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-1<\/span><br \/>\n Active \/ Total Objects <span class=\"token punctuation\">(<\/span>% used<span class=\"token punctuation\">)<\/span>    <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">678901<\/span> \/ <span class=\"token number\">1234567<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">55.0<\/span>%<span class=\"token punctuation\">)<\/span><br \/>\n  Total \/ Used Memory                <span class=\"token builtin class-name\">:<\/span> <span class=\"token number\">256789<\/span> \/ <span class=\"token number\">145678<\/span><br \/>\n<span class=\"token comment\"># Used Memory &#061; \u5185\u6838 slab \u5360\u7528\u7684\u5185\u5b58<\/span><\/p>\n<p><span class=\"token comment\"># \u7528\u6237\u6001 &#043; \u5185\u6838\u6001 &#061; \u5b8c\u6574\u5185\u5b58\u5360\u7528<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 3. \/proc\/meminfo \u8be6\u7ec6\u4fe1\u606f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;Slab|SReclaimable|SUnreclaim&#034;<\/span> \/proc\/meminfo<br \/>\nSlab:           <span class=\"token number\">145678<\/span> kB<br \/>\nSReclaimable:    <span class=\"token number\">87654<\/span> kB    \u2190 \u53ef\u56de\u6536\u7684 slab<br \/>\nSUnreclaim:      <span class=\"token number\">58024<\/span> kB    \u2190 \u4e0d\u53ef\u56de\u6536\u7684 slab<br \/>\n<span class=\"token comment\"># SReclaimable &#043; SUnreclaim &#061; Slab<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 4. \u5b8c\u6574\u5185\u5b58\u5168\u666f\u56fe &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/proc\/meminfo <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-30<\/span><br \/>\nMemTotal:        <span class=\"token number\">8057892<\/span> kB<br \/>\nMemFree:         <span class=\"token number\">4123456<\/span> kB<br \/>\nMemAvailable:    <span class=\"token number\">6234567<\/span> kB<br \/>\nBuffers:          <span class=\"token number\">123456<\/span> kB<br \/>\nCached:          <span class=\"token number\">2098765<\/span> kB<br \/>\nSwapCached:            <span class=\"token number\">0<\/span> kB<br \/>\nActive:          <span class=\"token number\">1234567<\/span> kB<br \/>\nInactive:        <span class=\"token number\">1876543<\/span> kB<br \/>\nActive<span class=\"token punctuation\">(<\/span>anon<span class=\"token punctuation\">)<\/span>:     <span class=\"token number\">456789<\/span> kB<br \/>\nInactive<span class=\"token punctuation\">(<\/span>anon<span class=\"token punctuation\">)<\/span>:   <span class=\"token number\">123456<\/span> kB<br \/>\nActive<span class=\"token punctuation\">(<\/span>file<span class=\"token punctuation\">)<\/span>:     <span class=\"token number\">777778<\/span> kB<br \/>\nInactive<span class=\"token punctuation\">(<\/span>file<span class=\"token punctuation\">)<\/span>:  <span class=\"token number\">1753087<\/span> kB<br \/>\nUnevictable:           <span class=\"token number\">0<\/span> kB<br \/>\nMlocked:               <span class=\"token number\">0<\/span> kB<br \/>\nSwapTotal:       <span class=\"token number\">2097148<\/span> kB<br \/>\nSwapFree:        <span class=\"token number\">2097148<\/span> kB<br \/>\nDirty:               <span class=\"token number\">123<\/span> kB<br \/>\nWriteback:             <span class=\"token number\">0<\/span> kB<br \/>\nAnonPages:        <span class=\"token number\">580245<\/span> kB<br \/>\nMapped:           <span class=\"token number\">234567<\/span> kB<br \/>\nShmem:            <span class=\"token number\">123456<\/span> kB<br \/>\nKReclaimable:      <span class=\"token number\">87654<\/span> kB<br \/>\nSlab:            <span class=\"token number\">145678<\/span> kB<br \/>\nSReclaimable:      <span class=\"token number\">87654<\/span> kB<br \/>\nSUnreclaim:        <span class=\"token number\">58024<\/span> kB<br \/>\nKernelStack:        <span class=\"token number\">5678<\/span> kB<br \/>\nPageTables:        <span class=\"token number\">12345<\/span> kB<br \/>\n<span class=\"token punctuation\">..<\/span>.<\/p>\n<h4>\u793a\u4f8b 7&#xff1a;\u6027\u80fd\u8c03\u4f18\u573a\u666f<\/h4>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f 1&#xff1a;\u7f51\u7edc\u670d\u52a1\u5668 sk_buff \u589e\u957f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u8868\u73b0&#xff1a;\u7f51\u5361\u4e22\u5305\u3001\u7f51\u7edc\u5ef6\u8fdf<\/span><br \/>\n<span class=\"token comment\"># \u68c0\u67e5&#xff1a;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">&#034;sk_buff&#034;<\/span><br \/>\n OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ\/SLAB CACHE SIZE NAME<br \/>\n  <span class=\"token number\">200000<\/span>  <span class=\"token number\">180000<\/span>  <span class=\"token number\">90<\/span>%    <span class=\"token number\">0<\/span>.25K   <span class=\"token number\">6250<\/span>      <span class=\"token number\">32<\/span>       200000K skbuff_head_cache<br \/>\n<span class=\"token comment\"># 90% \u4f7f\u7528\u7387 &#061; \u63a5\u8fd1\u4e0a\u9650&#xff0c;\u53ef\u80fd\u5728\u7f51\u7edc\u9ad8\u8d1f\u8f7d\u65f6\u4e22\u5305<\/span><\/p>\n<p><span class=\"token comment\"># \u89e3\u51b3&#xff1a;<\/span><br \/>\n<span class=\"token comment\"># 1. \u8c03\u6574 netdev_max_backlog<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">net.core.netdev_max_backlog<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">2000<\/span><br \/>\n<span class=\"token comment\"># 2. \u8c03\u6574 socket \u7f13\u51b2\u533a<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">net.core.rmem_max<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">12582912<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">net.core.wmem_max<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">12582912<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f 2&#xff1a;dentry \u7f13\u5b58\u4e0d\u8db3 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u8868\u73b0&#xff1a;\u78c1\u76d8 IO \u9ad8\u3001stat() \u6162<\/span><br \/>\n<span class=\"token comment\"># \u89e3\u51b3&#xff1a;\u8c03\u5927 \/proc\/sys\/vm\/vfs_cache_pressure<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/proc\/sys\/vm\/vfs_cache_pressure<br \/>\n<span class=\"token number\">100<\/span><br \/>\n<span class=\"token comment\"># \u8c03\u5c0f&#xff08;\u4fdd\u7559\u66f4\u591a dentry&#xff09;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">vm.vfs_cache_pressure<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">50<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f 3&#xff1a;\u8fdb\u7a0b\u6cc4\u6f0f task_struct &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u8868\u73b0&#xff1a;\u8fdb\u7a0b\u6570\u6301\u7eed\u589e\u957f<\/span><br \/>\n$ <span class=\"token function\">ps<\/span> <span class=\"token parameter variable\">-e<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">wc<\/span> <span class=\"token parameter variable\">-l<\/span><br \/>\n<span class=\"token comment\"># \u5bf9\u5e94 slabtop \u4e2d task_struct \u589e\u957f<\/span><br \/>\n<span class=\"token comment\"># \u89e3\u51b3&#xff1a;\u5b9a\u4f4d\u5e76 kill \u6cc4\u6f0f\u8fdb\u7a0b<\/span><br \/>\n$ <span class=\"token function\">ps<\/span> aux <span class=\"token parameter variable\">&#8211;sort<\/span><span class=\"token operator\">&#061;<\/span>-%mem <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span> <span class=\"token parameter variable\">-20<\/span><br \/>\n<span class=\"token comment\"># \u627e\u51fa\u5927\u5185\u5b58\u8fdb\u7a0b<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f 4&#xff1a;nf_conntrack \u6ee1 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> nf_conn<br \/>\n OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ\/SLAB CACHE SIZE NAME<br \/>\n  <span class=\"token number\">262144<\/span>  <span class=\"token number\">262144<\/span> <span class=\"token number\">100<\/span>%    <span class=\"token number\">0<\/span>.31K   <span class=\"token number\">8192<\/span>      <span class=\"token number\">32<\/span>      1048576K nf_conntrack<br \/>\n<span class=\"token comment\"># 100% \u4f7f\u7528 &#061; \u9632\u706b\u5899\u8fde\u63a5\u8868\u5df2\u6ee1&#xff0c;\u65b0\u8fde\u63a5\u88ab\u62d2\u7edd<\/span><\/p>\n<p><span class=\"token comment\"># \u89e3\u51b3&#xff1a;<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token assign-left variable\">net.netfilter.nf_conntrack_max<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">524288<\/span><br \/>\n$ <span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token assign-left variable\">net.netfilter.nf_conntrack_tcp_timeout_established<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">600<\/span><br \/>\n<span class=\"token comment\"># \u8c03\u5927\u8fde\u63a5\u4e0a\u9650 &#043; \u7f29\u77ed\u8d85\u65f6<\/span><\/p>\n<h4>\u793a\u4f8b 8&#xff1a;\u81ea\u52a8\u5316\u5206\u6790\u4e0e\u811a\u672c<\/h4>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 1. slab \u6301\u7eed\u76d1\u63a7\u811a\u672c &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/opt\/scripts\/slab_watch.sh<br \/>\n<span class=\"token comment\">#!\/bin\/bash<\/span><br \/>\n<span class=\"token comment\"># \u6bcf 60 \u79d2\u8bb0\u5f55\u4e00\u6b21 slabtop \u8f93\u51fa<\/span><br \/>\n<span class=\"token assign-left variable\">LOG_DIR<\/span><span class=\"token operator\">&#061;<\/span>\/var\/log\/slab<br \/>\n<span class=\"token function\">mkdir<\/span> <span class=\"token parameter variable\">-p<\/span> <span class=\"token variable\">$LOG_DIR<\/span><\/p>\n<p><span class=\"token keyword\">while<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">do<\/span><br \/>\n    <span class=\"token assign-left variable\">TS<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token function\">date<\/span> &#043;%F_%H%M%S<span class=\"token variable\">)<\/span><\/span><br \/>\n    slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$LOG_DIR<\/span>\/slab_<span class=\"token variable\">$TS<\/span>.txt&#034;<\/span><br \/>\n    <span class=\"token comment\"># \u6e05\u7406 7 \u5929\u524d<\/span><br \/>\n    <span class=\"token function\">find<\/span> <span class=\"token variable\">$LOG_DIR<\/span> <span class=\"token parameter variable\">-name<\/span> <span class=\"token string\">&#034;slab_*.txt&#034;<\/span> <span class=\"token parameter variable\">-mtime<\/span> &#043;7 <span class=\"token parameter variable\">-delete<\/span><br \/>\n    <span class=\"token function\">sleep<\/span> <span class=\"token number\">60<\/span><br \/>\n<span class=\"token keyword\">done<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 2. \u5927 cache \u544a\u8b66 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/opt\/scripts\/slab_alert.sh<br \/>\n<span class=\"token comment\">#!\/bin\/bash<\/span><br \/>\n<span class=\"token comment\"># \u76d1\u63a7 cache &gt; 1GB<\/span><br \/>\n<span class=\"token assign-left variable\">THRESHOLD_KB<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">1048576<\/span>  <span class=\"token comment\"># 1GB<\/span><\/p>\n<p>slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-n<\/span> &#043;7 <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token parameter variable\">-v<\/span> <span class=\"token assign-left variable\">thresh<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token variable\">$THRESHOLD_KB<\/span> <span class=\"token string\">&#039;<br \/>\n{<br \/>\n    cache_kb &#061; $7<br \/>\n    gsub(&#034;K&#034;, &#034;&#034;, cache_kb)<br \/>\n    if (cache_kb &gt; thresh) {<br \/>\n        print &#034;[ALERT] &#034; $8 &#034; cache \u4f7f\u7528 &#034; cache_kb &#034;K \u5185\u5b58&#034;<br \/>\n    }<br \/>\n}&#039;<\/span> <span class=\"token operator\">|<\/span> <span class=\"token keyword\">while<\/span> <span class=\"token builtin class-name\">read<\/span> line<span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">do<\/span><br \/>\n    logger <span class=\"token parameter variable\">-p<\/span> kern.warning <span class=\"token string\">&#034;Slab: <span class=\"token variable\">$line<\/span>&#034;<\/span><br \/>\n    <span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;<span class=\"token variable\">$line<\/span>&#034;<\/span><br \/>\n    <span class=\"token comment\"># \u53ef\u52a0\u9489\u9489\/\u90ae\u4ef6\u901a\u77e5<\/span><br \/>\n<span class=\"token keyword\">done<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 3. \u4e0e\u5176\u4ed6\u76d1\u63a7\u96c6\u6210 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n$ <span class=\"token function\">cat<\/span> \/opt\/scripts\/slab_to_prometheus.sh<br \/>\n<span class=\"token comment\">#!\/bin\/bash<\/span><br \/>\n<span class=\"token comment\"># \u8f6c\u6362 slabtop \u4e3a prometheus \u6587\u672c\u683c\u5f0f<\/span><br \/>\n<span class=\"token assign-left variable\">OUT<\/span><span class=\"token operator\">&#061;<\/span>\/var\/lib\/node_exporter\/textfile\/slab.prom<br \/>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;# HELP slab_cache_bytes Total bytes used by kernel slab cache&#034;<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token variable\">$OUT<\/span><br \/>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">&#034;# TYPE slab_cache_bytes gauge&#034;<\/span> <span class=\"token operator\">&gt;&gt;<\/span> <span class=\"token variable\">$OUT<\/span><\/p>\n<p>slabtop <span class=\"token parameter variable\">-o<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">tail<\/span> <span class=\"token parameter variable\">-n<\/span> &#043;7 <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <span class=\"token string\">&#039;<br \/>\n{<br \/>\n    cache_kb &#061; $7<br \/>\n    gsub(&#034;K&#034;, &#034;&#034;, cache_kb)<br \/>\n    gsub(&#034;M&#034;, &#034;000&#034;, cache_kb)<br \/>\n    cache_bytes &#061; cache_kb * 1024<br \/>\n    name &#061; $8<br \/>\n    gsub(&#034;-&#034;, &#034;_&#034;, name)<br \/>\n    print &#034;slab_cache_bytes{name&#061;\\\\&#034;&#034; name &#034;\\\\&#034;} &#034; cache_bytes<br \/>\n}&#039;<\/span> <span class=\"token operator\">&gt;&gt;<\/span> <span class=\"token variable\">$OUT<\/span><\/p>\n<p><span class=\"token comment\"># prometheus node_exporter \u91c7\u96c6<\/span><br \/>\n<span class=\"token comment\"># \u914d\u5408 grafana \u753b\u56fe<\/span><\/p>\n<hr \/>\n<h3>\u26a0\ufe0f \u6ce8\u610f\u4e8b\u9879<\/h3>\n<p>1. \u9700\u8981 root \u6743\u9650 \u666e\u901a\u7528\u6237\u6267\u884c slabtop \u4f1a\u663e\u793a\u53d7\u9650\u6570\u636e&#xff0c;\u4ec5\u5f53 kernel.yama.ptrace_scope&#061;0 \u4e14 \/proc\/slabinfo \u5168\u5458\u53ef\u8bfb\u3002\u751f\u4ea7\u4e2d\u5fc5\u987b sudo\u3002<\/p>\n<p>2. \/proc\/slabinfo \u5185\u6838\u9009\u9879 \u90e8\u5206\u5185\u6838\u914d\u7f6e CONFIG_SLAB \u5173\u95ed\u65f6 \/proc\/slabinfo \u4e0d\u5b58\u5728\u3002 \u68c0\u67e5&#xff1a;<\/p>\n<p> $ <span class=\"token function\">cat<\/span> \/proc\/slabinfo <span class=\"token operator\"><span class=\"token file-descriptor important\">2<\/span>&gt;<\/span>\/dev\/null <span class=\"token operator\">|<\/span> <span class=\"token function\">head<\/span><br \/>\n<span class=\"token comment\"># \u65e0\u8f93\u51fa &#061; \u5185\u6838\u4e0d\u5bfc\u51fa  <\/span><\/p>\n<p>\u5185\u6838 &lt; 2.6.32 \u6216\u5d4c\u5165\u5f0f\u7cfb\u7edf\u53ef\u80fd\u6ca1\u3002<\/p>\n<p>3. SLAB vs SLUB vs SLOB \u8f93\u51fa\u5dee\u5f02<\/p>\n<ul>\n<li>SLUB&#xff08;\u73b0\u4ee3\u9ed8\u8ba4&#xff09;&#xff1a;\u5b57\u6bb5\u6700\u5168<\/li>\n<li>SLAB&#xff08;\u8001\u5185\u6838&#xff09;&#xff1a;\u5b57\u6bb5\u5c11<\/li>\n<li>SLOB&#xff08;\u5d4c\u5165\u5f0f&#xff09;&#xff1a;\u51e0\u4e4e\u65e0\u6570\u636e \u73b0\u4ee3 Linux \u90fd\u662f SLUB\u3002<\/li>\n<\/ul>\n<p>4. \u9ad8\u9891\u7387\u5237\u65b0\u5f71\u54cd slabtop -d 1 \u6bcf\u79d2\u5237\u65b0&#xff0c;\u4f1a\u6301\u7eed\u8bfb\u53d6 \/proc\/slabinfo\u3002 \u5927\u91cf cache&#xff08;\u51e0\u4e07&#xff09;\u65f6&#xff0c;\u8bfb\u53d6\u53ef\u80fd 10-50ms \u5ef6\u8fdf\u3002 \u76d1\u63a7\u7cfb\u7edf\u522b\u7528 &lt; 5 \u79d2\u95f4\u9694\u3002<\/p>\n<p>5. \u6392\u5e8f\u5b57\u6bb5\u5927\u5c0f\u5199 slabtop -s a&#xff08;\u6d3b\u8dc3\u5bf9\u8c61\u6570&#xff09;\u548c -s A&#xff08;\u67d0\u4e9b\u7248\u672c&#xff09;\u542b\u4e49\u4e0d\u540c\u3002 \u7528 &#8211;sort&#061; \u957f\u683c\u5f0f\u66f4\u7a33\u3002<\/p>\n<p>6. \u540d\u79f0\u4e2d&#034;-&#034;\u7684\u8f6c\u4e49 \u5f88\u591a cache \u540d\u542b -&#xff08;kmalloc-64\u3001nf_conn&#xff09;\u3002 grep\/awk \u5904\u7406\u65f6\u7528\u5f15\u53f7\u6216\u8f6c\u4e49\u3002<\/p>\n<p>7. \u4e0e \/proc\/meminfo \u7684\u5173\u7cfb slabtop \u5934\u90e8 \u201cUsed Memory\u201d &#061; \/proc\/meminfo \u4e2d Slab \u5b57\u6bb5\u3002 \u4f46\u53ea\u5c55\u793a\u90e8\u5206&#xff08;\u4e0d\u662f\u5168\u90e8 cache&#xff09;\u3002 \u5b8c\u6574\u6570\u636e\u770b \/proc\/slabinfo \u539f\u59cb\u6587\u4ef6\u3002<\/p>\n<p>8. \u5bb9\u5668\u5185\u7684\u5c40\u9650 Docker \u9ed8\u8ba4 PID \u547d\u540d\u7a7a\u95f4\u9694\u79bb&#xff0c;\u5bb9\u5668\u5185 slabtop \u770b\u5230\u7684\u662f\u5bbf\u4e3b\u673a\u5168\u5c40\u3002 \u4e5f\u53ef\u80fd\u56e0 cgroup \u9650\u5236\u770b\u5230\u4e0d\u540c\u89c6\u56fe\u3002<\/p>\n<p>9. \u6570\u503c\u5355\u4f4d slabtop \u9ed8\u8ba4\u5343\u5b57\u8282&#xff08;K&#xff09;\u3002 OBJ SIZE \u662f\u5355\u5bf9\u8c61\u5927\u5c0f&#xff08;\u5e26 K&#xff09;\u3002 \u5b9e\u9645 K &#061; 1024 \u5b57\u8282&#xff0c;\u4e0d\u662f 1000\u3002<\/p>\n<p>10. \u4f18\u5316\u5efa\u8bae \u5982\u679c\u67d0\u4e2a cache \u6301\u7eed 100% \u6ee1\u4e14\u4e0d\u80fd\u56de\u6536&#xff1a;<\/p>\n<li>\u68c0\u67e5\u9a71\u52a8 bug&#xff08;\u5347\u7ea7\u5185\u6838&#xff09;<\/li>\n<li>\u8c03\u6574 \/proc\/sys\/vm\/* \u53c2\u6570<\/li>\n<li>\u91cd\u542f\u670d\u52a1\/\u7cfb\u7edf&#xff08;\u6700\u540e\u624b\u6bb5&#xff09;<\/li>\n<li>\u542f\u7528 slab_nomerge&#xff08;\u907f\u514d\u8bef\u5408\u5e76&#xff09;<\/li>\n<li>\u4f7f\u7528 BPF \u5de5\u5177\u505a\u7cbe\u7ec6\u5206\u6790<\/li>\n<hr \/>\n<h3>&#x1f4dd; \u603b\u7ed3<\/h3>\n<p>slabtop \u662f&#034;\u5185\u6838\u5185\u5b58\u7684 top&#034;\u2014\u2014\u4e13\u95e8\u770b slab \u5206\u914d\u5668\u3002\u672c\u8282\u8981\u70b9&#xff1a;<\/p>\n<ul>\n<li>\u6838\u5fc3\u5b9a\u4f4d&#xff1a;\u7528\u6237\u6001\u5185\u5b58\u7528 top\/ps&#xff0c;\u5185\u6838\u6001\u5185\u5b58\u7528 slabtop<\/li>\n<li>\u5173\u952e\u5b57\u6bb5&#xff1a;OBJS\/ACTIVE\/USE\/OBJ SIZE\/SLABS\/CACHE SIZE\/NAME<\/li>\n<li>\u8bca\u65ad\u573a\u666f&#xff1a;\n<ul>\n<li>\u5185\u6838\u5185\u5b58\u589e\u957f \u2192 \u89c2\u5bdf\u54ea\u4e2a cache \u5728\u6da8<\/li>\n<li>dentry \u589e\u957f \u2192 \u76ee\u5f55\u9879\u6cc4\u6f0f\/\u7f13\u5b58\u538b\u529b<\/li>\n<li>sk_buff \u6ee1 \u2192 \u7f51\u7edc\u9ad8\u8d1f\u8f7d<\/li>\n<li>nf_conntrack \u6ee1 \u2192 \u9632\u706b\u5899\u62d2\u7edd\u8fde\u63a5<\/li>\n<\/ul>\n<\/li>\n<li>\u6570\u636e\u6e90&#xff1a;\/proc\/slabinfo&#xff08;slabtop \u662f\u7f8e\u5316\u5668&#xff09;<\/li>\n<li>\u914d\u5408\u4f7f\u7528&#xff1a;\n<ul>\n<li>free&#xff08;\u6574\u4f53\u5185\u5b58&#xff09;<\/li>\n<li>\/proc\/meminfo&#xff08;slab \u8be6\u7ec6&#xff09;<\/li>\n<li>vmstat&#xff08;slab \u56de\u6536&#xff09;<\/li>\n<li>ps&#xff08;\u7528\u6237\u6001\u8fdb\u7a0b\u5185\u5b58&#xff09;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u6700\u7ec8\u5efa\u8bae&#xff1a;\u65e5\u5e38\u5de1\u68c0 slabtop -s c -o \u770b\u6700\u5927 5 \u4e2a cache&#xff1b;\u5185\u5b58\u544a\u8b66 \u914d\u5408 \/proc\/meminfo \u4e2d Slab \u5b57\u6bb5&#xff1b;\u6df1\u5ea6\u8bca\u65ad \u7528 perf \/ bpftool \u6293\u5177\u4f53\u5185\u6838\u5bf9\u8c61&#xff1b;\u751f\u4ea7\u76d1\u63a7 \u5bfc\u51fa prometheus \u6307\u6807\u3002<\/p>\n<hr \/>\n<h3>&#x1f4da; \u76f8\u5173\u547d\u4ee4<\/h3>\n<table>\n<tr>\u547d\u4ee4\u7528\u9014<\/tr>\n<tbody>\n<tr>\n<td>slabtop<\/td>\n<td>\u5b9e\u65f6 slab \u4fe1\u606f&#xff08;\u672c\u8282&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>top \/ htop<\/td>\n<td>\u7528\u6237\u6001\u8fdb\u7a0b\u8d44\u6e90<\/td>\n<\/tr>\n<tr>\n<td>free<\/td>\n<td>\u7269\u7406\u5185\u5b58\u6982\u89c8<\/td>\n<\/tr>\n<tr>\n<td>cat \/proc\/slabinfo<\/td>\n<td>slab \u539f\u59cb\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>cat \/proc\/meminfo<\/td>\n<td>\u8be6\u7ec6\u5185\u5b58\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>vmstat<\/td>\n<td>\u865a\u62df\u5185\u5b58\u7edf\u8ba1<\/td>\n<\/tr>\n<tr>\n<td>ps aux<\/td>\n<td>\u8fdb\u7a0b\u8be6\u60c5<\/td>\n<\/tr>\n<tr>\n<td>pmap<\/td>\n<td>\u8fdb\u7a0b\u5185\u5b58\u6620\u5c04<\/td>\n<\/tr>\n<tr>\n<td>sysctl<\/td>\n<td>\u8c03\u6574\u5185\u6838\u53c2\u6570<\/td>\n<\/tr>\n<tr>\n<td>echo N &gt; \/proc\/sys\/vm\/drop_caches<\/td>\n<td>\u624b\u52a8\u56de\u6536\u7f13\u5b58<\/td>\n<\/tr>\n<tr>\n<td>perf<\/td>\n<td>\u6027\u80fd\u5206\u6790<\/td>\n<\/tr>\n<tr>\n<td>bpftool<\/td>\n<td>BPF \u5de5\u5177&#xff08;\u9ad8\u7ea7&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>numastat<\/td>\n<td>NUMA \u5185\u5b58\u7edf\u8ba1<\/td>\n<\/tr>\n<tr>\n<td>sysstat \/ sar -r<\/td>\n<td>\u5185\u5b58\u5386\u53f2<\/td>\n<\/tr>\n<tr>\n<td>crash<\/td>\n<td>\u5185\u6838\u8f6c\u50a8\u5206\u6790&#xff08;vmcore&#xff09;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Linux\u547d\u4ee4-slabtop&#xff08;\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f&#xff09;&#x1f530; \u7b80\u4ecb&#x1f4d6; \u8bed\u6cd5\u2699\ufe0f \u9009\u9879&#x1f4a1; \u5b9e\u6218\u793a\u4f8b\u793a\u4f8b 1&#xff1a;\u57fa\u672c slabtop\u793a\u4f8b 2&#xff1a;\u6309\u5bf9\u8c61\u6570\u6392\u5e8f\u793a\u4f8b 3&#xff1a;\u4e00\u6b21\u6027\u8f93\u51fa  \u76d1\u63a7\u793a\u4f8b 4&#xff1a;\u8bca\u65ad\u5185\u6838\u5185\u5b58\u6cc4\u6f0f\u793a\u4f8b 5&#xff1a;\u5e38\u89c1 cache \u540d\u79f0\u8bc6\u522b\u793a\u4f8b 6&#xff1a;\u4e0e\u7528\u6237\u6001\u5185\u5b58\u5de5\u5177\u5bf9\u6bd4\u793a\u4f8b 7&#xff1a;\u6027\u80fd\u8c03\u4f18\u573a\u666f\u793a\u4f8b 8<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[58],"topic":[],"class_list":["post-88432","post","type-post","status-publish","format-standard","hentry","category-server","tag-linux"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/88432.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"Linux\u547d\u4ee4-slabtop&#xff08;\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f&#xff09;&#x1f530; \u7b80\u4ecb&#x1f4d6; \u8bed\u6cd5\u2699\ufe0f \u9009\u9879&#x1f4a1; \u5b9e\u6218\u793a\u4f8b\u793a\u4f8b 1&#xff1a;\u57fa\u672c slabtop\u793a\u4f8b 2&#xff1a;\u6309\u5bf9\u8c61\u6570\u6392\u5e8f\u793a\u4f8b 3&#xff1a;\u4e00\u6b21\u6027\u8f93\u51fa \u76d1\u63a7\u793a\u4f8b 4&#xff1a;\u8bca\u65ad\u5185\u6838\u5185\u5b58\u6cc4\u6f0f\u793a\u4f8b 5&#xff1a;\u5e38\u89c1 cache \u540d\u79f0\u8bc6\u522b\u793a\u4f8b 6&#xff1a;\u4e0e\u7528\u6237\u6001\u5185\u5b58\u5de5\u5177\u5bf9\u6bd4\u793a\u4f8b 7&#xff1a;\u6027\u80fd\u8c03\u4f18\u573a\u666f\u793a\u4f8b 8\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/88432.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-31T23:48:45+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/88432.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/88432.html\",\"name\":\"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-07-31T23:48:45+00:00\",\"dateModified\":\"2026-07-31T23:48:45+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/88432.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/88432.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/88432.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/88432.html","og_locale":"zh_CN","og_type":"article","og_title":"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"Linux\u547d\u4ee4-slabtop&#xff08;\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f&#xff09;&#x1f530; \u7b80\u4ecb&#x1f4d6; \u8bed\u6cd5\u2699\ufe0f \u9009\u9879&#x1f4a1; \u5b9e\u6218\u793a\u4f8b\u793a\u4f8b 1&#xff1a;\u57fa\u672c slabtop\u793a\u4f8b 2&#xff1a;\u6309\u5bf9\u8c61\u6570\u6392\u5e8f\u793a\u4f8b 3&#xff1a;\u4e00\u6b21\u6027\u8f93\u51fa \u76d1\u63a7\u793a\u4f8b 4&#xff1a;\u8bca\u65ad\u5185\u6838\u5185\u5b58\u6cc4\u6f0f\u793a\u4f8b 5&#xff1a;\u5e38\u89c1 cache \u540d\u79f0\u8bc6\u522b\u793a\u4f8b 6&#xff1a;\u4e0e\u7528\u6237\u6001\u5185\u5b58\u5de5\u5177\u5bf9\u6bd4\u793a\u4f8b 7&#xff1a;\u6027\u80fd\u8c03\u4f18\u573a\u666f\u793a\u4f8b 8","og_url":"https:\/\/www.wsisp.com\/helps\/88432.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-07-31T23:48:45+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"7 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/88432.html","url":"https:\/\/www.wsisp.com\/helps\/88432.html","name":"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-07-31T23:48:45+00:00","dateModified":"2026-07-31T23:48:45+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/88432.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/88432.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/88432.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Linux\u547d\u4ee4-slabtop\uff08\u5b9e\u65f6\u663e\u793a\u5185\u6838 slab \u7f13\u5b58\u4fe1\u606f\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/88432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=88432"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/88432\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=88432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=88432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=88432"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=88432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}