はじめに
前にOracle Master Bronze(DBA)の勉強をしていた時にふとセマフォのことがわからなくなったことを思い出したのでざっくりまとめてみました。
セマフォとは
共有リソースの排他制御(アクセス可能な接続数を制御)を行うもの。
Linuxでの確認方法
[root@localhost ~]# sysctl kernel.sem
kernel.sem = 250(①) 32000(②) 32(③) 128(④)
パラメータ説明
|No|パラメータ|説明|
|:--|:--|:--|:--|
|①|SEMMSL|セマフォ集合ごとのセマフォ数の最大値。IHSで言うとThreadLimitのこと。|
|②|SEMMNS|システム全体での、全てのセマフォ集合におけるセマフォ数の制限。IHSで言うとMaxClientのこと。
|③|SEMOPM|semop(2)コールに指定されるオペレーション数の最大値。semopはセマフォ獲得後に行う操作で、その実行回数を指定するもの。(*1)|semopのMax値。|
|④|SEMMNI|システム全体でのセマフォ識別子の最大値(=セマフォ集合の最大数)。IHSで言うとServerLimitのこと。|
(*1)セマフォ獲得後の操作とは、セマフォの値を増減させることだと思われる
覚え方
|No|パラメータ|覚え方|
|:--|:--|:--|:--|
|①|SEMMSL|Max Set Limit。セットのリミット(上限)。|
|②|SEMMNS|S = Systemということで全体の数。N = Nodeで全体、という意味(だと考える)。|
|③|SEMOPM|semopのMax値。|
|④|SEMMNI|I = Identify。N = Nodeで全体、という意味(だと考える)。|
イメージ図
参考URL