2008年6月23日月曜日

プロセス間通信(IPC) のシステムチューニング

DATE       :20080623
MACHINE :
OS :Sun OS 5.10
LANGUAGE :
DATABASE :
APPLICATION:
REFERENCE :http://sdc.sun.co.jp/news/private/2006/10/tech_sol0610.html
CONTENTS :
DETAIL :

セマフォなどのプロセス間通信(IPC) のシステムチューニングは、Solaris のリソース管理フレームワークで置き換えられました。 これまでのように /etc/system ファイルにシステム・チューニング・パラメタを記述してシステムの再起動を行う必要はありません。 prctl(1) コマンドを使って、リソースのコントロール値を変更することができます。
しかし、これまでチューニングを必要とした多くのアプリケーションは、デフォルト値の増大とリソースの自動割り当てによってチューニングすることなく動作する可能性があります。 以下の新しいリソースコントロールと旧パラメタの対応表を確認してください。
新リソース制御 新デフォルト値 旧パラメタ 旧デフォルト値 最大値
process.max-msg-qbytes 65536 msginfo_msgmnb 4096 ULONG_MAX
process.max-msg-qbytes 65536 msginfo_msgmnb 4096 ULONG_MAX
process.max-msg-messages 8192 msginfo_msgtql 40 UINT_MAX
process.max-sem-ops 512 seminfo_semopm 10 INT_MAX
process.max-sem-nsems 512 seminfo_semmsl 25 SHRT_MAX
project.max-shm-memory 物理メモリーの 1/4 shminfo_shmmax 0x800000 UINT64_MAX
project.max-shm-ids 128 shminfo_shmmni 100 224
project.max-msg-ids 128 msginfo_msgmni 50 224
project.max-sem-ids 128 seminfo_semmni 10 224
また、これらの変更にともない、下記の IPC チューニングパラメタは Solaris 10 では削除されており、これらが /etc/system に記述されている場合、コメントとして扱われ、システムの動作には影響しません。
    semsys:seminfo_semmns、 semsys:seminfo_semvmx、 semsys:seminfo_semmnu、 semsys:seminfo_semaem、 semsys:seminfo_semume、 semsys:seminfo_semusz、 semsys:seminfo_semmap、 shmsys:shminfo_shmseg、 shmsys:shminfo_shmmin、 msgsys:msginfo_msgmap、 msgsys:msginfo_msgseg、 msgsys:msginfo_msgssz、 msgsys:msginfo_msgmax

※ IPC のチューニングパラメタに関する変更は、SMF によるものではなくリソース管理の導入によるものです。

ブート中に ata がタイムアウトになる (6586621)

DATE       :20080623
MACHINE :x86
OS :SunOS 5.10
LANGUAGE :
DATABASE :Oracle 10.2.0
APPLICATION:
REFERENCE :
CONTENTS :ブート中に ata がタイムアウトになる (6586621)
DETAIL :
vmware server 上でもなる。

Intel マルチプロセッサシステムでのシステムのブート中に ata ドライバがタイムアウトになることがあります。
これらのタイムアウトは、HBA コントローラが従来の ata ドライバにバインドされたドライブ上に、ルートデバイスが置かれている場合に発生します。
これらのタイムアウトにより、システムのブート中に一時ハングアップ、深刻なハングアップ、またはパニック状態が発生して、次のようなコンソールメッセージが表示されます。

scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: reset bus, target=0 lun=0
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: early timeout, target=0 lun=0
gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0):
Error for command 'read sector' Error Level: Informational
gda: [ID 107833 kern.notice] Sense Key: aborted command
gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3
gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0):
Error for command 'read sector' Error Level: Informational
gda: [ID 107833 kern.notice] Sense Key: aborted command
gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: abort request, target=0 lun=0
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: abort device, target=0 lun=0
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: reset target, target=0 lun=0
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: reset bus, target=0 lun=0
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0):
timeout: early timeout, target=0 lun=0
gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0):
Error for command 'read sector' Error Level: Informational
gda: [ID 107833 kern.notice] Sense Key: aborted command
gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3


gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0):

  • 回避方法 1: BIOS の AHCI を有効にします (システムで使用できる場合)。この設定を有効にするには、Solaris OS を再インストールする必要があります。

  • 回避方法 2: ata ドライバを使用しないコントローラ上のディスクに Solaris をインストールします。

  • 回避方法 3: シングルプロセッサが有効になるように、BIOS 設定の MP を無効にします。

  • 回避方法 4: シングルプロセッサが有効になるように、Solaris の MP を無効にします。GRUB (Grand Unified Bootloader) メニューから次の手順を実行します。

    1. e と入力して、選択した Solaris エントリを編集します。

    2. カーネルで始まる行に移動します。

    3. e と入力して、GRUB 編集モードに切り替えます。

    4. -kd をその行に追加します。

    5. Enter キーを押して変更を受け入れます。

    6. b と入力して、選択した Solaris エントリをブートします。

    7. kbmd プロンプトで、次のコマンドを入力します。


      use_mp/W 0 :c
    8. システムのブートを実行する場合は、手順 10 に進みます。そうでない場合は、Solaris 10 5/08 ソフトウェアをインストールします。

    9. インストールの終わりに、システムをリブートします。手順 1 〜 7 を繰り返します。

    10. この変更を永続的なものにして、以降のブートで上記の手順を繰り返す必要がないようにするには、次の手順を実行します。

      システムのブートが完了したら、スーパーユーザーになります。

    11. /etc/system ファイルを開きます。

    12. 次の行を追加します。


      set use_mp = 0
  • 回避方法 5: マイクロコードの更新を無効にします。次のコマンドを入力します。


    # mv /platform/i86pc/ucode /platform/i86pc/ucode.disabled

    マイクロコードの更新は、システムが起動したあとに手動で呼び出すことができます。


    # ucodeadm -u /platform/i86pc/ucode.disabled/intel-ucode.txt

Sun Microsystems Documentationより