さまざまなアプリを実行しているECSサーバーがいくつかあります。いくつかの不思議な停止の後、インスタンスがハードにスワップし、そのIOバーストバランスを消費して、インスタンスを役に立たなくしていることに気づきました。
事実:
t2
およびt3
インスタンスです。vm.swappiness
は1
または5
に設定されますvmstat
はsi
とso
を報告しています。procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 434948 83616 73468 818316 580 0 580 0 883 1453 5 1 93 1 0
2 0 429060 65308 73468 818320 17760 0 17760 76 5927 6318 15 21 52 12 1
0 3 440660 81180 73464 817208 4352 12880 4352 12880 5791 2672 8 39 0 52 0
1 1 443164 78080 73452 816304 10104 3272 10104 3272 3850 3807 7 34 0 58 1
1 1 438456 63944 73460 816356 13168 156 13216 212 3673 3686 12 34 21 32 0
1 1 449472 72748 73460 815872 1600 11016 1600 11016 3815 1445 1 23 0 74 1
0 4 453592 59728 73460 815964 3324 8748 4080 8752 4891 2881 10 34 1 54 0
1 2 462724 68380 73456 815152 1704 10412 1704 10412 5381 2195 7 35 1 55 0
0 2 473444 81148 73456 815108 1024 10976 1024 10976 4637 1608 2 34 2 63 1
0 1 483124 87432 73444 818604 2352 9684 6136 9684 4526 1800 8 28 8 54 1
0 1 480308 66860 73452 824476 13656 0 19536 36 3982 4103 11 27 39 22 0
0 3 483744 75016 73448 825132 5016 7532 5860 7532 5645 4748 14 33 6 47 0
2 2 493140 80348 73448 825068 1888 10164 1888 10164 4128 1993 2 34 0 62 0
1 0 497544 78488 73440 824976 6248 6452 6364 6452 4192 2916 3 39 16 41 1
0 1 494216 65096 73440 825068 12488 0 12616 0 4070 4620 7 26 42 24 1
0 2 503856 69436 73452 824760 1968 10152 1968 10192 4885 1821 4 28 2 65 0
1 0 514264 88532 73440 824188 1332 10668 1332 10672 4749 1622 2 25 1 71 0
0 1 512984 76628 73440 824120 12844 0 12844 0 3653 3517 6 26 48 20 0
1 3 479192 65220 73440 824556 12484 0 12832 0 3729 4821 6 29 34 31 0
0 5 462680 78612 73440 824824 6120 6784 6532 6784 4111 3582 5 45 0 49 1
0 2 433376 99148 73448 824992 5884 7560 6024 7596 3954 3407 3 33 1 62 0
vm.overcommit_memory
は0
です2つの同一のcat /proc/meminfo
の出力(1つはSWAPあり、もう1つはSWAPなし)は次のとおりです。
スワップを無効にした場合:
MemTotal: 2004488 kB
MemFree: 178976 kB
MemAvailable: 489360 kB
Buffers: 136892 kB
Cached: 290396 kB
SwapCached: 0 kB
Active: 1063520 kB
Inactive: 612900 kB
Active(anon): 817380 kB
Inactive(anon): 436892 kB
Active(file): 246140 kB
Inactive(file): 176008 kB
Unevictable: 17620 kB
Mlocked: 17620 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 20 kB
Writeback: 0 kB
AnonPages: 1262220 kB
Mapped: 140336 kB
Shmem: 252 kB
Slab: 73448 kB
SReclaimable: 39612 kB
SUnreclaim: 33836 kB
KernelStack: 6944 kB
PageTables: 15300 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1002244 kB
Committed_AS: 3076324 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 182248 kB
DirectMap2M: 1875968 kB
DirectMap1G: 0 kB
およびSWAPを有効にした場合:
MemTotal: 2004488 kB
MemFree: 116220 kB
MemAvailable: 925764 kB
Buffers: 73472 kB
Cached: 827312 kB
SwapCached: 136268 kB
Active: 653736 kB
Inactive: 1041616 kB
Active(anon): 375736 kB
Inactive(anon): 424652 kB
Active(file): 278000 kB
Inactive(file): 616964 kB
Unevictable: 17620 kB
Mlocked: 17620 kB
SwapTotal: 1499132 kB
SwapFree: 1061032 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 749004 kB
Mapped: 180880 kB
Shmem: 252 kB
Slab: 118940 kB
SReclaimable: 92304 kB
SUnreclaim: 26636 kB
KernelStack: 6784 kB
PageTables: 14212 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2501376 kB
Committed_AS: 2881136 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 110568 kB
DirectMap2M: 1947648 kB
DirectMap1G: 0 kB
私が試したこと:
vm.swappiness
値を試しましたが、何もしないようですswapoff -a && swapon -a
の変更後に再起動してvm.swappiness
を実行しようとしました私が期待していること:
なんでこんなことが起こっているの?何が足りないのですか?私は何を変えるべきですか?残念ながら、AFAIKでは、t2
/t3
ATMでインスタンスストアを使用する(およびそのボリュームにSWAPを配置する)ことはできません。
現時点では、私のマシンはSWAPをオフにして実行されており、これに満足しています。少し心配しているだけです。 (編集:)私の主な目的は、最後の手段としてSWAPにのみ触れるようにシステムを説得することです。
私の他の単純なEC2Ubuntuマシンは、本来の動作をしています。
私の設定での私の想像では、合計メモリ使用量が使用可能なメモリを超えるという不幸なイベントの場合を除いて、SWAPは常に無料のままである必要があります
メモリ不足の状態は遅すぎます。ページアウトによる再利用は非常に遅く、LinuxVMMはOOMから離れようとします。
代わりに、スペースを交換するために非アクティブなページをゆっくりと細流化すると、スペースとI/Oが利用可能になります。使用しない場合、なぜページングスペースがあるのでしょうか。調整可能なswappinessが高いほど、同じページングスペースの使用が速くなります。
アルゴリズムに関するドキュメントについては、MM wiki、LWNの記事、およびUNIX Stack Exchangeのいくつかのリファレンスを参照してください。 OSファイルキャッシュ用にLinuxカーネルで使用されているページ置換アルゴリズムは何ですか?
ホストでは、割り当てられた合計(Committed_AS
)は約3 GBですが、MemTotal
は2GBです。 150%は必ずしも悪いわけではなく、その一部は非アクティブまたは未使用です。しかし、保守的な最悪の場合、すべてがRAMに収まらないため、Linuxは可能な限りページアウトします。安全なメモリサイズはCommitted_AS
未満になりますが、定量化するのは少し難しいです。
ご使用の環境では、IOPSは永続ストレージのクォータにカウントされるため、非常に高価です。ページングスペースを無効にし、OOMを監視します。