限られた数のスワップファイルしか持てないのはなぜですか?

限られた数のスワップファイルしか持てないのはなぜですか?

これは理論的な質問です。

スワップファイル/パーティションを29個しか持てないのはなぜですか?

10,000個の1MBスワップファイルを作成してスワップしようとすると、swapon:/ tmp / swap29:swapon failed:Operation not allowedを使用して30個のスワップファイルで失敗します。

これを達成するためのスクリプト

#!/bin/bash
i=0
SWAP=/tmp/swap

while [ "$i" -lt 10000 ];do
    dd if=/dev/urandom of=$SWAP$i bs=1M count=1
    mkswap "${SWAP}${i}"
    swapon "${SWAP}${i}"
    i=$((i+1))
done

誰かがこれを説明できますか?

ベストアンサー1

一般英語で:

カーネルはスワップファイル/パーティションを追跡する必要があり、それをテーブルで実行します。各エントリは、事前に割り当てられた少量のメモリを占有します。したがって、合理的な制限を超えるデフォルトの制限(最大スワップテーブルサイズ)が選択されます。

本当にもっと機能が必要な人は誰でもカーネルを修正して再コンパイルできます。

おすすめ記事