2007年 8月 29日 水曜日
やっぱり Sun がスキ!
「What's New Solaris 10 8/07」で見る、Solaris 10 8/07 の新機能
Solaris 10 11/06 (Update 3) がリリースされてから半年以上が経過しました。
blogs.sun.com などでは、次のアップデートリリースである Solaris 10 8/07 (Update 4) の情報などを目にする機会も増えてきていますが、どのような新機能が追加されたか気になりますね。
実は、Solaris 10 8/07 は、まだリリースされていませんが、ドキュメントだけは先に公開されているのです!
docs.sun.com にドキュメントが公開されると、リリース間近!と考えてよいかと思います。
Solaris 10 8/07 の新機能については、下記の URL で公開されているリリースノートで確認することができます。
What's New in the Solaris 10 8/07 Release
http://docs.sun.com/app/docs/doc/817-0547/6mgbdbsmb?l=ja&a=view
ざっと数えたところ、14 セクション 72 項目のアップデートがありました。
Brandz, IP Instance, iSCSI target のサポート, ZFS version 4 など大きな変更点がたくさんあります。
今回は、この中から独断と偏見でピックアップしたものをご紹介してみようかと思います。
System Administration Features
iostat Improvements
→ Solaris I/O Multipathing (MPxIO) で構成されるデバイスのパフォーマン ス情報取得する -Y オプションが追加されました。
ZFS Command Improvements and Changes
→ ZFS version 4 となりました。(Solaris 10 11/06 は、Version 3) リリースノートには、Solaris 10 11/06 で追加された機能もまとめられて います。 (ちなみに、最新の Nevada build 70 では、ZFS Version 8 となっていま す)
- ZFS コマンドヒストリのサポート
→ zpool のコマンド実行履歴を参照することができるようになりまし た。
- ZFS Pool の状態情報の改善
→ 永続的なエラーが発生しているファイルの一覧を表示できるよう になりました。以前は、i-node 表示のみでファイルを特定する のが少し面倒でした。
- ZFS と Solaris iSCSI
→ ZFS ボリュームを Solaris iSCSI target device として構成できるようになりました。
- ZFS プロパティの追加
→ 拡張アトリビュートの有効/無効を xattr プロパティでコントロー ルできるようになりました。また、ZFS ファイルシステム作成時に も、プロパティの指定が可能となりました。
- 全ての ZFS ファイルシステムの情報を表示
→ # zfs get -s local all と実行することにより、ローカルシステム に存在する、全ての ZFS 領域情報を出力することが可能となりまし た。
- zfs receive -F による受信前の強制ロールバック
-F オプションにより、受信前に最新のスナップショットの内容をロー ルバックします。
raidctl のエンハンス
→ raidctl コマンドが一新されました。
特にディスクの表記が「C.ID.L」と変更になり多少複雑となっています。
それぞれは、次のような意味となります。
C = チャネル
ID = ターゲット ID
L = LUN
たとえば、0.1.2 は、チャネル 0 に接続している物理ディスクであり、ターゲット ID は 1 、LUN は 2 ということを表しています
x86: Predictive Self-Healing for PCI Express on x64 Systems
→ ハードウェアの問題を自動的に検出および診断する予測的セルフヒーリング 機能が、x64 システムの PCI-Express に対応しました。
MPxIO Path Steering
→ 指定されたパスを介して診断コマンドを実行可能なよう、新しい ioctl が追加されました。
x86: stmsboot Porting
→ SPARC 版でのみサポートされていた MPxIO を構成する stmsboot コマンド が x86 でも利用可能となりました。 (Solaris 10 x86 11/06 までは、デフォルトで MPxIO が有効になってい るため、無効にするのが少し面倒でした。)
x86: Concurrent FPDMA READ/WRITE QUEUED Under SATA Module
→ 特定の作業負荷がかかっている場合でも、marvell88sx ドライバ(Sun Fire X4500 など)の入出力にて、性能が大幅に向上します。
x86: Tagged Queuing
→ SATA ディスクの Tagged Queuing 機能をサポートしました。
Installation Enhancements
NFSv4 Domain Name Configurable During Installation
→ いままでは、インストール後に設定していた NFv4 ドメイン名を、OS インストール時に設定できるようになりました。
Solaris Live Upgrade
→ Solaris Live Upgrade を利用することで、non-global zone を持つシステ ムの upgrade が可能となりました。 Solaris 10 11/06 ではできなかったのです!
Upgrading the Solaris OS When Non-Global Zones Are Installed
→ 上記に関連して、non-global zone を持つシステムの upgrade 方法につい ての注意事項が書かれています。 Solaris を Upgrade するときは、Live Upgrade での方法を推奨し、 non-global zone が含まれる flash archive を利用した場合は、正しくイ ンストールできないとのことです。 Keyboard Configuration Automated - インストール時に、キーボードの種類を自動的に識別できるようになり ました。自動認識に失敗した場合は、明示的に指定するようになっていま す。
Deferred-Activation Patching
→ パッチ管理コマンドである patchadd および patchrm の内部動作が変更となりま�������た。
patch に含まれる pkginfo に SUNW_SAFEMODE が含まれている場合に、この機能が有効となり、すぐにはパッチが適用されません。
厳密には、適用作業は行われますが、パッチ適用対象となるファイルをすぐに置き換えるわけではなく、その部分は、loopback filesystem(lofs)の機能を利用して、パッチ適用前の状態が保持されます。
これは、稼働しているシステムの動作を保証するためです。 その後、リブートにより lofs にて保護されていた部分が更新されパッチが適用されたシステムが稼働を開始するようになります。
と、説明していますが、実際の動作については、まだ、確認できていない部分もあることをご了承下さい。
Solaris 10 8/07 以前リリースでは、PatchID: 119254-42 (SPARC) または 119255-42 を適用することで、この機能が有効となりますが、まだ、リリースされていないパッチなので、どのようになるかはわかりません。。。 いずれにしても、興味深い変更点です。
Networking Enhancements
IPsec Tunnel Reform
→ RFC 2401 に準拠した、IPsec トンネルモードの機能を実装し、他の IPsec 実装との相互運用性が向上しました。
Packet Filter Hooks
→ カーネル内で IP パケットを処理したり、キャプチャすることができる API が提供されました。これを利用することで、non-global zone 間でのパケットキャプチャなども可能になります。
SMF Enhancements to Routing Management
→ ルーティングに関係するサービスが、SMF に対応しました。SMF に対応することにより、svcadm や svccfg で管理可能になり、プロセス再起動の機能も利用利用できます。
また、routeadm コマンドも改良され、これら SMF ベースのサービスを管理できるようになりました。
Quagga Software Routing Suite
→Quagga のサポートにより、OSPF, BGP などの経路制御用プロトコルをサポートします。
これは、以前のリリースにて提供されていた GNU Zebra を置き換えるものとなります。
DHCPv6 Client
→ DHCPv6 によるクライアントの自動構成をサポートしました。
Single Hosts File
→/etc/hosts と /etc/inet/ipnodes 分かれていた hosts ファイルが、やっと、一つのファイルに統合にされ、/etc/hosts および /etc/inet/ipnodes は、/etc/inet/hosts へのシンボリックリンクとなりました。
IP address を変えたいと思って、/etc/hosts だけ変更してみたものの、なぜか、変わらず・・・といった経験がありませんか?
以前のリリースでは、/etc/inet/ipnodes に書かれた、IP アドレスを参照していたため、このような問題が発生していました。
Large Send Offload
→ TCP Segmentation Offload とも呼ばれ、パケットの分割をホスト側の CPU ではなく、NIC ハードウェアに行わせることにより、CPU 負荷を減らすとともにネットワーク性能を向上させる技術です。Large Send Offload に対応した NIC が必要となります。
(対応 NIC などの詳細がつかめていないのですが、xge ドライバは LSO をサポートしているようです。)
x86: nge Driver Updated to Support Jumbo Framework
→ nge インターフェースで、Jumbo Frame が使えるようになりました。 利用可能な最大フレームサイズは、9K となります。
Security Enhancements
Solaris Key Management Framework
→ pktool コマンドは、PKI オブジェクトを管理するためのコマンドとなり、キーストアを管理するkmfcfg コマンドが提供されました。
libmd - Message Digest library
→ MD4, MD5, SHA1, SHA2 暗号化アルゴリズムを利用できる API が追加されました。
Solaris Cryptographic Framework
→ 証明書を利用し、バイナリに署名を付加できる elfsign コマンドがアップデートされました。
File System Enhancements
Support for iSCSI Target Devices
→ 以前、本 blog でも紹介した iSCSI Target がサポートされました!(よかった・・・汗)
iSCSI は、既存の TCP/IP ネットワーク上で SCSI プロトコルを利用するための技術です。
Solaris 同士で、iSCSI target/initiator を構成する方法については,
以下の URL にて紹介しています。
http://blogs.sun.com/yappri/entry/iscsi_on_solaris
Extended FILE Space for 32-bit Solaris Processes
→ 32bit アプリケーションプロセスは、利用可能な FILE descpritor 数に 256 個の制限がありましたが、今回のリリースにて制限をなくす ことが可能となりました。 既存の 32 bit アプリケーションにて、この機能を利用する場合は 環境変数 LD_PRELOAD_32 を利用し、file descpritor の制限を解除する ライブラリを設定し、実行する必要があります。 詳しくは、extendedFILE(5), extended_FILE_stdio(3C) を参照してくだ さい。
System Resources Enhancements
lx Branded Zones: Solaris Containers for Linux Applications
→Solaris Containers 技術を利用して Linux アプリケーションを動作させることができる BrandZ の登場です!
CentOS 3.5 〜 3.8 または、Red Hat Enterprise Linux 3.5 〜 3.8 が動作する non-global branded zone を作成することが可能となります。 (全てのアプリケーションの動作をサポートしているわけではありませんので注意が必要です。
また、lx branded zone は、x86 版のみの機能となります。)
BrandZ の導入方法については、以下の URL が参考になります。
http://jp.sun.com/communities/0705/feature01.html
http://jp.sun.com/communities/0705/feature02.html
Improved zonecfg Procedures for Creating Containers
→ zonecfg による non-global zone 作成時のリソース管理に、新しい項目の追加およびエンハンスがありました。
なかでも、rcapd (1M)を利用した物理メモリの使用制限が BrandZ でも利用可能となっています。
IP Instances: LAN and VLAN Separation for Non-Global Zones
→ non-global zone に、専用の network intercace を割り当てることによりネットワークをより柔軟に活用できる IP Instance 機能が追加されました! 簡単言ってしまえば、non-global zone 内でも、global zone と同様にネットワークが扱えるようになり、経路情報の設定や、snoop でのパケット取得、IP Filter の適用などがおこなえるようになりました。
また、以下の URL でも簡単ですが紹介しています。
やっぱり Sun がスキ!:IP Instances and Exclusive Zones
http://blogs.sun.com/yappri/entry/ip_instances_and_exclusive_zones
Solaris Zones Boot Enhancements
→ zoneadm の boot コマンドにオプションが追加されました。non-gobal zone 起動時に SMF が出力するメッセージをコントロールすることができたり、svc:/milestone/single-user (single user mode)の状態 で起動できるオプションも追加されています。
System V Resource Controls for Zones
→ non-global zone にて、プロセスが利用する System V 資源をコントロール することが可能となりました。
Zone Unique Identifier
→ zoneadm list -p の実行時、non-global zone には、ユニークな識別子が 付加されるようになりました。 non-global zone の移動や、名前変更時などにおいて non-global zone の 識別に役立ちます。
0:global:running:/::native:shared 1:testzone:running:/export/Zones/testzone:5f159b3b-2c68-4476-bf9a-80cc772f5629:native:shared
Ability to Mark Zones as “Incomplete”
→ non-global zone の状態を Incomplete に変更することが可能となりました。
この状態になってしまうと、uninstall を実行するまで取り消せなくなるので注意してください。
Using DTrace in a Non-Global Zone
→ fasttrap, pid, profile, syscall プロバイダが non-global zone で利用できるようになりました。 zonecfg コマンドに追加された limitpriv プロパティを設定することで 有効/無効を選択することが可能です。
Desktop Tools
Thunderbird 2.0
Firefox 2.0 Web Browser
→ Web ブラウザとして Firefox 2 が、メーラーとして Thunderbird 2 が 採用されました。 メニューも日本語化されています。
また、Thunderbird には、カレンダーとの連携をサポートする Lightning add-on が標準搭載されています。
x86: XVideo Support RealPlayer
→ RealPlayer は、X サーバが提供する XVideo エクステンションに対応しました。これにより、少ない CPU 負荷でストリーミングコンテンツを再生すること が可能となりました。
X11 Windowing Features dtlogin Language Selection Overhaul
→ dtlogin 上での言語選択方法が変更になりました。 ちょっとした変更ですがわかり易くなったかと思いま す。
X Server DTrace Provider
→ DTrace で利用できる Xserver Provider が、各種 Xserver (Xorg, Xsun Xprt, Xnest, Xvfb) に追加され、X クライアントとのコネクションを DTrace にてトレース可能となりました。
Xorg X11R7.2 Server and Drivers
→ Solaris のウィンドウシステムを構成する要、X11 環境が X11R7.2 をベー スとしたものになりました。 (SPARC 版のみ、X サーバは従来どおりの Xsun となります)
Language Support Enhancements
Japanese Font Update
→ 日本語 HG フォントがアップデートされ、JISX0213:2004 準拠となりました。
Input Method Switcher Enhancement and EMEA Keyboard Layout Emulation Support
→ インプット・メソッドを切り替えるためのツールであった gnome-im-switcher-applet (GNOME Panel 上で動作する gnome applet)が、 iiim-panel に置き換えられました。 iiim-panel は、スタンドアロンアプリケーションのため CDE 環境でも 実行可能です。
x86: Zero-CountryCode
Keyboard Layout Support
→ kbd -s コマンドにより、任意のキーボード配列を指定することが可能となりました。
kbd -s を実行することで、選択可能な配列を表示し選択することができます。
Developer Tool Enhancements
SunVTS 6.4
→ Hardware をテストするためのツールである SunVTS が SunVTS 6.4 となりました。
SunVTS は、DVD メディアの s0/Solaris_10/ExtraValue/CoBundled に 納められています。このディレクトリには、Trusted Extensions も あります!
New Drivers
Reliable Datagram Sockets
→ InfiniBand において、Reliable Datagram Sockets (RDS) をサポートしま した。というわけで、InfiniBnad もサポートしています! http://www.sun.com/io_technologies/infiniband/Infiniband0.html
Enhanced USB EHCI Host Controller Driver
→ ehci ドライバにおいて、一定容量の転送量を保証するアイソクロナス転送がサポートされました。
USCSI LUN Reset Support
→ uscsi (user SCSI command interface) driver にて、LUN リセットの機能が追加されました。
SATA HBA Framework and Marvell Driver
→ SATA の READ/WRITE FPDMA QUEUED コマンドがサポートされ、 Sun Fire X4500 などに搭載される Marvell 社製 SATA コントローラを 利用しているシステムでパフォーマンスが向上します。
Compact Flash Support
→ CompactFlash(CF) が ATA disk として利用できるようになり、CF からの boot をサポートしました。
ACM driver of USB Communication Device Class
→ Universal Serial Bus Communication Device Class Abstract Control Model (USB CDC ACM) に準拠したデバイスをサポートしました。 たとえば、お手持ちの携帯電話などを USB モデムとして利用できたり、 USB シリアルアダプタを利用して、コンソールを利用(入力/出力)できた りします。 この記事を書いている筆者は、EMOBILE EM・ONE を USB モデムとして使えることを確認しています。
携帯電話をモデムとして利用する場合は、以下の URL が参考となります。
Solaris で FOMA を使う
http://blogs.sun.com/ihara/entry/solaris%E3%81%A7foma%E3%82%92%E4%BD%BF%E3%81%86
IBM LTO-4 Tape Drive Support
HP LTO-4 Tape Drive Support
→ IBM および HP 社製の LTO-4 ドライブをサポートしました。
NVIDIA Accelerated Graphics Drivers
→ NVIDIA が提供する Solaris driver が統合されました。もちろん、OpenGL も利用可能です。
x86: ACPI Thermal Zone Monitor
→ 一部、x86/x64 サーバにおいて、ACPI が提供する Thermal Zone Monitor イベントを監視し、異常が発生した場合にシャットダウンを実行する機能がサポートされました。これにより、tzmon pseudo ドライバが追加されています。
x86: Adaptec aac Hardware Support
→ Adaptec 社のハードウェア RAID カードを利用するための aac ドライバが サポートされました。
x86: SATA AHCI HBA Driver
→ Intel の AHCI に準拠する SATA HBA 用ドライバがサポートされました。これは、Intel ICH6 コントローラまたは、VIA vt8251 コントローラで利用 可能です。
System Performance Enhancements
SPARC: UltraSPARC-T1 (Niagara) II PCI Express Interface Unit Performance Counter Data
→ UltraSPARC-T1 システムには、パフォーマンス・カウンターを持つ PCI Express Interface Units が搭載されていますが、busstat コマンドで内容を参照できるようになりました。
Multi-level CMT Scheduling Optimizations
→ UltraSPARC-T2 を含む CMT プロセッサ向けのスケジューリングが見直され、パフォーマンスが向上しています。
Process Count Scalability
→ 現在の UltraSPARC システムでは、8,192 個のコンテキストをサポートしています。しかし、プロセス数が 8,192 個を超えると、カーネルがコンテキストを横取りし、プロセスを維持しようとしますが、この動作の負荷が大きくプロセスが増えるにつれてパフォーマンスが悪化します。この処理を見直し、設計し直すことで、効率的に 8,192 個以上のプロセスを稼働させることができるようになります。
CPU 数が多いシステムに効果的です。
MPSS Extended to Shared Memory
→ multiple page size support (MPSS) の SysV 共有メモリサポートが向上しました。また、/dev/zero の mmap あるいは、MAP_ANON フラグによって作成された共有メモリにおいても MPSS が利用可能となります。
Device Management Features CPU Power Management
→ CPU パワーマネージメントをサポートするために、あらたに 2 つのキーワードが power.conf に追加されました。
autopm を置き換える、cpupm
Console Subsystem Features Coherent Console
→ コンソール出力のレンダリング方法を OpenBoot PROM 経由からframebuffer ドライバを経由するよう変更し、OBP への依存を極力減らした 出力方法となり、テキストのスクロール速度や、CPU への負荷が低減されるようになりました。
Posted at 11:46午前 8 29, 2007 by noriho in Sun | 投稿されたコメント[1]
Sun Ray Server Software - utuser の便利な使い方
今回は、Sun Ray Server Software のユーザ管理ユーティリティである utuser の
便利な使い方を紹介します。
utuser には様々なオプションが存在しますが、その中でも実用的な Sun Ray ユーザの
追加/削除/確認方法を実際のオペレーションを交えて説明します。
[Sun Ray ユーザの登録方法]
Sun Ray のユーザを登録する際、 GUI から一人づつ追加する事も可能ですが、utuser
コマンドを使った CUI でのユーザ登録が可能です。
(例) 下記条件で Sun Ray ユーザを登録する
- トークンID = MicroPayflex.0001640d65000100
- ユーザ名 = user001
- 補足情報 = dept1
- ホスト名 = pana
- ポート番号 = 7007
# utuser -a "MicroPayflex.0001640d65000100, pana, 7007, user001 dept1" Added one user.このように "utuser -a" でユーザを登録する為に必要な項目は全部で5項目あり、各項目は コンマで区切り、全体をダブルクォーテーションで括る必要があります。
さらに人数が多く、バッチ処理を行いたい時は、必要情報をファイルに書き出して 一括登録する事が可能です。
(例)
下記リストを作成して Sun Ray ユーザを一括登録する
# cat userlist MicroPayflex.0001640d65000100, pana, 7007, user001 dept1 MicroPayflex.0002640d65000100, pana, 7007, user002 dept1 MicroPayflex.0003640d65000100, pana, 7007, user003 dept1 MicroPayflex.0004640d65000100, pana, 7007, user004 dept2 MicroPayflex.0005640d65000100, pana, 7007, user005 dept2 MicroPayflex.0006640d65000100, pana, 7007, user006 dept2 MicroPayflex.0007640d65000100, pana, 7007, user007 dept3 MicroPayflex.0008640d65000100, pana, 7007, user008 dept3 MicroPayflex.0009640d65000100, pana, 7007, user009 dept3 MicroPayflex.000a640d65000100, pana, 7007, user010 dept3"utuser -af" オプションで一括登録
# utuser -af userlist Error: line 1: Token 'MicroPayflex.0001640d65000100' is already in the adminstra tion database....skipping Added user002 dept1 Added user003 dept1 Added user004 dept2 Added user005 dept2 Added user006 dept2 Added user007 dept3 Added user008 dept3 Added user009 dept3 Added user010 dept3 9 users added, 1 line skipped due to errors.もし登録リストに不具合がある場合、エラーとして出力されます。今回のケースは、 既に user001 が登録されていた為にエラーとなりました。
登録したユーザの状況は、 "utuser -l" コマンドで確認できます。
# utuser -l Token ID User Name Other Info ------------------------------ ------------------------------ --------------- MicroPayflex.0001640d65000100 user001 dept1 MicroPayflex.0002640d65000100 user002 dept1 MicroPayflex.0003640d65000100 user003 dept1 MicroPayflex.0004640d65000100 user004 dept2 MicroPayflex.0005640d65000100 user005 dept2 MicroPayflex.0006640d65000100 user006 dept2 MicroPayflex.0007640d65000100 user007 dept3 MicroPayflex.0008640d65000100 user008 dept3 MicroPayflex.0009640d65000100 user009 dept3 MicroPayflex.000a640d65000100 user010 dept3
[Sun Ray ユーザ削除方法]
登録されているユーザを削除する時は -d オプションを使用します。
(例) トークンID MicroPayflex.0001640d65000100 のユーザを削除する
# utuser -d MicroPayflex.0001640d65000100 Deleted one user.
一括削除する時は、削除したいトークンID の一覧を作成して -df オプションで 削除します。
# utuser -df userlist Deleted MicroPayflex.0001640d65000100 Deleted MicroPayflex.0002640d65000100 Deleted MicroPayflex.0003640d65000100 Deleted MicroPayflex.0004640d65000100 Deleted MicroPayflex.0005640d65000100 Deleted MicroPayflex.0006640d65000100 Deleted MicroPayflex.0007640d65000100 Deleted MicroPayflex.0008640d65000100 Deleted MicroPayflex.0009640d65000100 Deleted MicroPayflex.000a640d65000100 10 users deletedちなみに、ユーザの一括削除に使用するリストは、第一カラム目のトークンID 以外は無視されますので、 登録時に使用したファイルをそのまま流用可能です。
最後に、フェイルオーバグループを作成している場合、どのユーザが どのサーバにログインしているか "utuser -Lg" にて確認する事も可能です。
# utuser -Lg Token ID Server Name User Name ------------------------------ ------------------------------ ------------------------------ MicroPayflex.0001640d65000100 server-01 user001 MicroPayflex.0002640d65000100 server-01 user002 MicroPayflex.0003640d65000100 server-02 user003 MicroPayflex.0004640d65000100 server-02 user004 MicroPayflex.0005640d65000100 server-01 user005
今回紹介した utuser の実例は、Sun Ray システムを提案/導入検討される方で、ユーザ管理 に関して GUI でなく CUI でも管理が出来る事は知っているけど、実際のオペレーション をされた事が無い方には参考になると思います。
Posted at 04:04午後 8 28, 2007 by Naoyuki Yamada in Sun | 投稿されたコメント[2]
pkg 形式の命名規則
皆さんが何気なく pkgadd する時に表示されるパッケージ名 "SUNWほにゃらら"
という名前ですが、実はこの先頭文字 "SUNW" は Sun のティッカー・シンボル(注1) を
意味しているってご存じでしたか?
pkg 形式の命名規則に、パッケージを提供する会社を判別する為、先頭にティッカー
を付与する決まりがあるそうです
(参考リンク)
。
だからベリタス製品の pkg 名も VRTSxxxx なんですね。
ちなみにこの法則は、全てに当てはまるものではなく、 SFWxxxx は、サンが提供
する Freeware という意味になります。
今回、Sun のティッカー・シンボルが SUNW から JAVA に変わった
ニュース
が流れました。
近い将来、 pkginfo で確認すると
JAVAxxxx みたいなパッケージが入ってくるのでしょうかねー。
(注1)
「ティッカー」とは銘柄を特定するために使用されている記号で、
日本株の銘柄コードにあたるものです。SUNW の最後の文字 "W" の意味に関して、
昔は Workstation、今は Worldwide などとサンは
説明
しているようです。
Posted at 04:18午後 8 27, 2007 by Naoyuki Yamada in Sun | 投稿されたコメント[0]
DTrace のススメ - DTrace でみる mod_perl の裏側
Solaris 上の Apache Web Server にて、perl で書かれたサイトを運用している 皆様は、perl を CGI としてお使いですか?それとも mod_perl を使用していますか?
mod_perl 自体は古くからありますので、皆様も既によく知っているかもしれません。 ただ、自分は漠然と mod_perl の方が CGI の場合よりも早いらしいとしか認識して いませんでした。
そこでちょっと mod_perl について調べてみました。
"mod_perl gives you a persistent Perl interpreter embedded in your web server. This lets you avoid the overhead of starting an external interpreter and avoids the penalty of Perl start-up time, giving you super-fast dynamic content." by http://perl.apache.org/
どうやら mod_perl は、web server (apache) に持続的に使用出来る Perl インタラプタ を組み込んでしまう事で、CGI の場合 (Perl スクリプトが呼び出されるたびに外部 Perl を実行する) と比べて Perl start-up time の時間を抑制出来るという物の様です。
という事で実際に呼び出しが抑制されているのかを DTrace を使って簡単に確認 してみました。
下記 man をみると、外部プログラムの呼び出しには exec() が関わりそうです。
% man -s 2 exec
System Calls exec(2)
NAME
exec, execl, execle, execlp, execv, execve, execvp - execute
^^^^^^^^
a file
^^^^^^
そこで今回は、SolarisInternals のサイトに掲載されている exec を追跡する DTrace スクリプト "exec.d" を使って検証してみましょう。
#!/usr/sbin/dtrace -s
#pragma D option quiet
proc:::exec
{
self->parent = execname;
}
proc:::exec-success
/self->parent != NULL/
{
@[self->parent, execname] = count();
self->parent = NULL;
}
proc:::exec-failure
/self->parent != NULL/
{
self->parent = NULL;
}
END
{
printf("%-20s %-20s %s\n", "WHO", "WHAT", "COUNT");
printa("%-20s %-20s %@d\n", @);
}
では、CGI として perl が呼び出される場合を確認してみます。
まず、exec.d を実行している最中に ab(apache bench) にて、perl で書かれた
index.cgi へアクセスさせます。
ab が終了したら exec.d を "Control + C" で終了させましょう。
jse8-213% /usr/apache2/bin/ab -n 2000 -c 64 http://localhost/cgi-bin/bench/index.cgi ... ... Server Software: Apache/2.0.58 Server Hostname: localhost Server Port: 80 Document Path: /cgi-bin/bench/index.cgi Document Length: 34637 bytes Concurrency Level: 64 Time taken for tests: 6.845140 seconds Complete requests: 2000 Failed requests: 0 Write errors: 0 Total transferred: 69658374 bytes HTML transferred: 69304680 bytes Requests per second: 292.18 [#/sec] (mean) Time per request: 219.044 [ms] (mean) Time per request: 3.423 [ms] (mean, across all concurrent requests) Transfer rate: 9937.71 [Kbytes/sec] received ... ... jse8-213%
# ./exec.d ^C WHO WHAT COUNT zsh ab 1 httpd index.cgi 2045 #
dtrace の結果をみると確かに、httpd から index.cgi が多数呼び出されて いるのがわかります。
では、mod_perl を使用した場合はどうなるでしょうか。
jse8-213% /usr/apache2/bin/ab -n 2000 -c 64 http://localhost/cgi-bin/bench/index.pl ... ... Server Software: Apache/2.0.58 Server Hostname: localhost Server Port: 80 Document Path: /cgi-bin/bench/index.pl Document Length: 34637 bytes Concurrency Level: 64 Time taken for tests: 2.683551 seconds Complete requests: 2000 Failed requests: 0 Write errors: 0 Total transferred: 69699894 bytes HTML transferred: 69354862 bytes Requests per second: 745.28 [#/sec] (mean) Time per request: 85.874 [ms] (mean) Time per request: 1.342 [ms] (mean, across all concurrent requests) Transfer rate: 25364.15 [Kbytes/sec] received ... ... jse8-213%
# ./exec.d ^C WHO WHAT COUNT zsh ab 1 #
今度は確かに zsh から ab が呼び出されていますが、httpd からは、index.pl は呼び出されていない (perl インタラプタを呼び出しているのでは無く、httpd が、index.pl を実行している) 事がわかります。
mod_perl を使って exec を抑制する事で、スループット(Requests per second) が、292.18 [#/sec] から、745.28 [#/sec] にも上がりましたので、perl で 書かれたサイトを運用している場合は、mod_perl を使用する事はかなりの 効果があるようです。
また、このように DTrace を使うとアプリケーションの設定変更による動作の 違いが簡単に確認できる様になります。 SolarisInternals のサイトには他にも fork.d 等、多くの有益な dtrace スクリプトが掲載されています。
是非皆様も SolarisInternals 等を参考に DTrace を効果的に使ってみて下さい。
Posted at 05:26午後 8 24, 2007 by Naoyuki Yamada in Sun | 投稿されたコメント[0]
これまでの blog 内容のまとめ
このブログを初めて 1 年強経過しました。
どうやら最近 Feed してくれている方も結構いらっしゃるようです。 最近読み始めた方のために過去の記事をまとめてみました。 以下の文章はその当時の文章をそのまま抜き出したので古いまま ですのでご注意を!!。 ですが、Solaris 系の情報はまだまだ使える情報が 沢山あるかと思います。 ご興味のある記事を是非是非読んでみて下さい!!
ちなみにこのブログは blogs.sun.com の日本語で書かれているブログの 中では結構高いヒット数なので、 記事をアップした日にはかなりの確率で「Hot blogs (today's hits)」で ランキングに載ってます(最近は記事アップ以外の日にもです)。 なのでこのまとめのページにも一見の価値ありかと。。。
カテゴリ一覧
Solaris 全般Solaris ZFS
Solaris コンテナ
Solaris Dtrace
SunRay
Open Source
ハードウェア
Java Enterprise System
豆知識
詳細
Solaris
[2006/03 投稿] USB Memory Stick の活用
[2006/04 投稿] 二人ルール・・・もうひとつのセキュリティ
[2006/04 投稿] SVMで手軽に始めるILM
[2006/04 投稿] Sun N1 System Manager - FLASHデモ
[2006/04 投稿] CD/DVD の作成方法(how to use "cdrw")
[2006/04 投稿] Solaris Fingerprint DataBase の紹介 (BluePrint)
[2006/06 投稿] file-roller を使いこなそう
[2006/06 投稿] zenityで簡単GUIプログラミング
[2006/07 投稿] Solaris のパッケージの内容をインストールせずに確認する方法
[2006/09 投稿] Sun の仮想化を知る - Virtualization Learning Center (日本語概要)
[2006/09 投稿] SMF ( Service Management Facility ) のご紹介
[2006/10 投稿] Solaris パッケージを作ろう!
[2006/10 投稿] CPU pool の構成をダイナミックに変更する
[2006/11 投稿] Solaris で NAT ルータ
[2006/11 投稿] VMware で Solaris を動かす
[2006/12 投稿] セキリュティー機能拡張(Secure By Default)
[2006/12 投稿] 暗号化 zip ファイル
[2007/01 投稿] Solaris 10 11/06 の新機能を紹介
[2007/02 投稿] Solaris Trusted Extensions を設定してみませんか?
[2007/02 投稿] これで迷わない Solaris インストール時の選択肢 - OEM サポートパッケージ
[2007/02 投稿] これで迷わない Solaris インストール時の選択肢 - 南極点のタイムゾーンは?
[2007/05 投稿] Solaris 上でディスクのデータを完全に消去する方法
[2007/07 投稿] Solaris 10 から追加! 新たな SNMP Agent(System Management Agent)
[2007/07 投稿] Solaris が認識しているネットワーク I/F 名を全部知る方法
Solaris ZFS
[2006/05 投稿] ZFS のご���介
[2006/11 投稿] コンテナ(ゾーン)内で ZFS
[2006/11 投稿] ZFS の筐体間レプリカを作成する
[2006/12 投稿] Solaris 10 11/06 で ZFS の機能が強化されました
[2007/05 投稿] USB メモリで ZFS!
Solaris コンテナ
[2006/11 投稿] コンテナ(ゾーン)内で ZFS
[2007/02 投稿] Solaris Container 新機能 - その1〜4
Solaris Dtrace
[2006/05 投稿] DTraceを使ってみよう(連載1、入門編)
[2006/06 投稿] DTrace サンプルを使ってみよう(連載2)
[2006/07 投稿] DTrace Toolkit を使ってみよう#3(連載3)
[2006/08 投稿] DTrace Toolkit より役立つDスクリプトを紹介します。(nfswizard.d))
[2006/08 投稿] DTrace Toolkit より役立つDスクリプトを紹介します。(httpdstat.d)
[2007/01 投稿] OpenSolaris(Nevada) - DTrace で遊ぶ
SunRay
[2006/05 投稿] Sun Ray 一新
[2006/09 投稿] SunRay でも USB メモリ
[2007/07 投稿] Sun Ray 端末のホットキー操作
Open Source
[2006/03 投稿]『最新の Nevada をインストールしてみました...』
[2006/04 投稿]『OpenSolaris をビルドしてみよう』
[2006/08 投稿] オープンソースでヴァーチャライゼーション
[2006/12 投稿] BeleniX - OpenSolaris Distribution (LiveCD)
[2007/01 投稿] OpenSolaris(Nevada) - Solaris iSCSI Target/Initiator の構築
[2007/03 投稿] Linux 用 RAID 管理コマンド lsiutil
[2007/04 投稿] IP Instances and Exclusive Zones
UltraSPARC T1
[2006/07 投稿] CoolThreads Selection Toolの紹介
[2006/07 投稿] UltraSPARC T1 はCPUの流れを変えた(連載1)
[2006/09 投稿] UltraSPARC T1 は発想の転換から生まれた(連載2)
[2006/10 投稿] Niagara II はさらにすごいらしい(連載3)
[2007/03 投稿] LDoms のポイント
ハードウェア
[2006/08 投稿] X4500 について
[2006/10 投稿] X4500 に触ってみました
[2006/10 投稿] コンテナでデータセンターを仮想化する 〜Project Blackbox〜
[2006/11 投稿] 消費電力計算ツール ( Power Calculator )
[2006/11 投稿] 戦場に咲いた一輪の花 Sun Fire X4600 の華麗な性能
[2007/03 投稿] Sun StorageTek 6140 パフォーマンス
[2007/03 投稿] Multithreaded 10 Gig E Networking Technology
[2007/04 投稿] Sun SPARC Enterprise M4000 のシステム情報
[2007/07 投稿] もう、FLOPS なんて怖くない!FLOPS 理論値計算方法
Java Enterprise System
[2007/04 投稿] Sun Java System Web Server 7.0 ご紹介
[2007/06 投稿] Sun Java System Messaging Server でスマートホストを指定しよう
Sun 豆知識
[2006/04 投稿] 『Sunロゴの豆知識』
[2006/06 投稿] Sun の古いマシンを探しに秋葉原の中古品を探検してみました。
[2006/07 投稿] EBC(Exective Briefing Center)ってご存じですか?
[2006/09 投稿] Duke 情報
[2007/05 投稿] Firewall 越しに RKVMS を使おう!
[2007/05 投稿] Blackbox の模型を作ろう!
[2007/06 投稿] シリアル変換コネクタを作ろう!
[2007/06 投稿] Bigadmin に日本語コンテンツが掲載されました!
Posted at 04:08午後 8 02, 2007 by Chizu Kitano in Sun | 投稿されたコメント[0]