<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Jui-Nan Lin&#039;s Blog</provider_name><provider_url>https://jnlin.org</provider_url><author_name>jnlin</author_name><author_url>https://jnlin.org/author/jnlin/</author_url><title>FreeBSD 設定 kern.ipc.nmbclusters=&quot;0&quot; 的問題</title><html>&lt;p&gt;中了個令人無言的地雷……&lt;/p&gt;  &lt;p&gt;FreeBSD 有一個well-known的參數調整：mbuf clusters的最大值（kern.ipc.nmbclusters）。當使用的mbuf clusters超過設定的最大值時，網路就會不通。不過，我們可以在 /boot/loader.conf 裡面把 kern.ipc.nmbclusters 設為 0，表示不設定最大值，這樣他就會被Kernel Space Memory的大小限制住（一個 mbuf cluster 要吃約 2KB 的Kernel Memory）。&lt;/p&gt;  &lt;p&gt;最近我們發現這樣設定的機器在有大量 TCP out-of-order 封包的網路環境下，網路效能表現非常差，於是做了很多交叉比對以及測試。最後發現有這樣問題的機器有兩個特點：netstat -s -p tcp 的結果，out-of-order packets 的 counter 都是 0，而且packets discarded due to memory problems 的 counter 很多。&lt;/p&gt;  &lt;p&gt;最後找到 &lt;a href=&quot;http://lists.freebsd.org/pipermail/freebsd-current/2007-October/077934.html&quot;&gt;Maillist上的資料&lt;/a&gt;，發現在 kern.ipc.nmbclusters 設定為 0 的情況下，net.inet.tcp.reass.maxsegments 也跟著被設定成 0 了，調整回預設值 1600 就解決這個問題了。&lt;/p&gt;</html><type>rich</type></oembed>