私のブックマーク
コンピュータシステムの基盤ソフトウェア
工学院大学 情報通信工学科 准教授 山口実靖
1. はじめに
コンピュータシステムは現代社会の必須のインフラとなり,
性能や機能の向上に関する研究が盛んに行われている.
発展の速度が高いのはもちろんのこと,
発表されている既存の研究成果,実装の数も膨大でありこれらを調査するのには膨大な時間が必要となる.
しかし,基盤の技術であるため多くの研究,開発と関連を持ちその理解が要求される局面は少なくない.
本稿ではコンピュータシステムの基盤系の研究の中で
ソフトウェア部の研究の情報が入手できるURLを中心に,
コンピュータシステム系の情報源となるURLを紹介していく.
2. オペーレーティングシステム
最初に,計算機の基盤ソフトウェアである OS に関するページ群を紹介する.
最先端のOS研究の会議として有名なのは ACM SIGOPS の SOSP (Symposium on Operating Systems Principles) と,USENIX の OSDI (Operating Systems Design and Implementation) である.
両会議とも隔年で開催され,SOSP が奇数年開催,OSDI が偶数年開催と交互に開催されている.
また,OSDI に限らず USENIX のサイト全体が OS 系の研究にとって重要なサイトとなっている.
URLは以下の通りである.
- SIGOPS
http://www.sigops.org/ - SOSP
http://www.sosp2007.org/
http://www.sigops.org/sosp/sosp05/default.htm
http://www.cs.rochester.edu/meetings/sosp2003/
(2001以前は省略) - SOSPへのリンク集(個人サイト)
http://sosp.org/ - USENIX
http://www.usenix.org/ - OSDI
http://www.usenix.org/events/bytopic/osdi.html
また,LinuxなどのオープンソースOS実装を用いてOSに関する研究を行う事例も多いが,
これらのソースコードは量が膨大でかつ,その一つ一つが容易には理解できない.
よって,既存の実装の理解のみで膨大な時間が消費されることも少なくない.
以下にLinuxの実装(ソースコード)の理解に役に立つサイトを紹介する.
Linux カーネルソースコード(バニラカーネル)の入手先
- LinuxHQ (Linux HeadQuarters)
http://www.linuxhq.com/ - The Linux Kernel Archives
http://www.kernel.org/
カーネルソースコード理解の助けとなるページ
- the Linux Cross Reference
(Hyper Link 形式のLinuxソースコースブラウジングページ)
http://lxr.linux.no/ - Linuxカーネルドキュメントプロジェクト
http://sourceforge.jp/projects/linux-kernel-docs/wiki/ - Linux Kernel Hack Japan
http://hira.main.jp/wiki/ - Linux Kernel Conference
http://osdn.jp/event/kernel2002/
http://osdn.jp/event/kernel2003/
http://osdn.jp/event/kernel2004/
http://osdn.jp/event/kernel2005/ - Linuxカーネルメモ
http://wiki.bit-hive.com/linuxkernelmemo/ - Linuxカーネルのコンフィグレーション手順
http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill05/lpicdrill01.html
近年大きな注目を集めているテーマに仮想化がある.
仮想化に関しても多くの実装,研究成果が存在するが,以下に有名な実装の情報源を紹介する.
- Xen
http://www.xen.org/
http://www.cl.cam.ac.uk/research/srg/netos/xen/ - KVM
http://kvm.qumranet.com/ - OpenVZ
http://wiki.openvz.org/ - Linux VServer
http://linux-vserver.org/ - VirtualBox (OSE)
http://www.virtualbox.org/ - User-mode Linux
http://user-mode-linux.sourceforge.net/ - Bochs
http://bochs.sourceforge.net/ - セキュアVM
http://www.securevm.org/ - VMWare
http://www.vmware.com/ - Parallels Virtuozzo Containers
http://www.parallels.com/ - Virtual PC
http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx - An Introduction to Virtualization
http://www.kernelthread.com/publications/virtualization/ - Virtual Linux
http://www-128.ibm.com/developerworks/library/l-linuxvirt/
以下,商用の実装
仮想化に関する横断的情報が入手可能なサイト
3. ストレージ,ファイルシステム
次にコンピュータシステムの代表的な構成要素の1個であるストレージの研究のページを紹介する.
ストレージに関する会議としては USENIX の FAST (File and Storage Technologies) と IEEE, NASA Cooperative MSST (Mass Storage Systems and Technologies) がある.
ネットワークストレージ関連の情報源としては,SNIA (Storage Networking Industry Association)というストレージの業界団体のWebサイトやその日本支部のWebサイトがある.
- SNIA
http://www.snia.org/ - SNIA 日本支部
http://www.snia-j.org/tech/
その他,ストレージ関連の最新情報が得られるサイトとして以下のサイトがある.
- StorageMojo
http://storagemojo.com/
(個人サイト.2009年1月現在,頻繁に更新がされている) - Data Storage EXPO
http://www.dse-expo.jp/ (情報サイトでは無いが,ビジネス情報が入手できる催しのサイト)
ファイルシステムに関しても膨大な数の研究成果,実装が発表されている.
各ファイルシステムの情報が入手可能なページのURLを以下に記す.
数があまりに多いため一部の紹介のみとなるが,網羅的な情報を収集したいときは「ファイルシステム実装の横断的情報が入手可能なサイト」が参考になると考えられる.
- ext2 ファイルシステムに関して
http://e2fsprogs.sourceforge.net/ext2.html
http://web.mit.edu/tytso/www/linux/ext2intro.html - ext3 ファイルシステムに関して
http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html
http://batleth.sapienti-sat.org/projects/FAQs/ext3-faq.html - XFS (SGI による高性能ファイルシステム)に関して
http://xfs.org/
http://oss.sgi.com/projects/xfs/ - JFSに関して
http://jfs.sourceforge.net/
http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.genprogc/doc/genprogc/fsyslayout.htm
http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.genprogc/doc/genprogc/fsyslayout2.htm - NTFS (主にWindows系のOSで使用されているファイルシステム) に関して.非公式ページが充実していると思われる
http://technet.microsoft.com/en-us/library/cc758691.aspx
http://technet.microsoft.com/en-us/library/cc781134.aspx
http://sourceforge.net/project/showfiles.php?group_id=13956&package_id=16543
http://www.linux-ntfs.org/
http://www.i.u-tokyo.ac.jp/edu/training/ss/lecture/new-documents/Lectures/08-NTFS/NTFS.pdf - ReiserFSに関して (非常に有名なファイルシステムの一つであるが,残念な事件によりその情報が入手困難になっている)
元来の公式ページ.2009年1月現在,閲覧不可能
http://www.namesys.com/
Wikipedia
http://en.wikipedia.org/wiki/ReiserFS - ZFS に関して
http://www.opensolaris.org/os/community/zfs/ - UFS (Unixなどで使用された古典的なファイルシステム)に関して
http://www.informit.com/content/images/0131482092/samplechapter/mcdougall_ch15.pdf - NFS に関して
NFS 4
http://www.ietf.org/html.charters/nfsv4-charter.html
http://www.ietf.org/rfc/rfc3530.txt
NFS 3
http://www.ietf.org/rfc/rfc1813.txt
NFS
http://www.ietf.org/rfc/rfc1094.txt - WAFL (Write Anywhere File Layout)
http://media.netapp.com/documents/wp_15_3002.pdf - WinFS (Microsoft社により開発が開始されたが後に開発中止となった高機能ファイルシステム) に関して
http://blogs.msdn.com/winfs/archive/2006/06/23/644706.aspx (WinFS のblog.更新中止)
「ファイルシステム実装の横断的情報が入手可能なサイト」としては以下のサイトがある.
- File system specifications
http://www.freebookcentre.net/file_system_specification/file_system_specifications.html - Wikipedia
http://en.wikipedia.org/wiki/Comparison_of_file_systems - ファイルシステム同士の性能比較情報
http://oss.sgi.com/projects/xfs/papers/filesystem-perf-tm.pdf
http://people.freebsd.org/~kris/scaling/Filesystem%20Performance.pdf
http://linuxvm.org/present/SHARE102/s9257jo.pdf - 個人ベースの測定の報告(データの信頼性は高くないと思われるが参考のために紹介)
http://linuxgazette.net/102/piszcz.html
http://www.debian-administration.org/articles/388
http://www.as220.org/jb/linux/
http://bulmalug.net/body.phtml?nIdNoticia=642
http://lkml.org/lkml/2007/7/30/139
近年は(広域)分散ファイルシステム,ストレージが注目を集めている.
これに関するページへのリンクを以下に記す.
- Lustre
http://wiki.lustre.org/
http://www.sun.com/software/products/lustre/ - GPFS
http://www-03.ibm.com/systems/clusters/software/gpfs/
http://www.ibm.com/developerworks/wikis/display/hpccentral/General+Parallel+File+System+(GPFS) - CXFS
http://www.sgi.com/products/storage/software/cxfs.html - Google File System
http://labs.google.com/papers/gfs.html (論文)
Bigtable
http://labs.google.com/papers/bigtable.html (論文) - OceanStore
http://oceanstore.cs.berkeley.edu/ - Farsite
http://research.microsoft.com/en-us/projects/farsite/ - Gfarm(クラスタファイルシステム)
http://datafarm.apgrid.org/ - Amazon S3 (Simple Storage Service)
http://aws.amazon.com/s3/ - CODA (ディスクネクディッドオペレーションなども考慮した古典的分散ファイルシステム)
http://www.coda.cs.cmu.edu/
4. ネットワーク, TCP/IP
代表的名なコンピュータネットワークは「インターネットで使用されている TCP/IP over Ethernet」であるが,
これに関しても多くの研究成果が発表されている.
特にTCPの輻輳制御に関する研究成果の数は近年急激に伸びており,それらの把握,それらとの比較は容易でない状況となっている.
TCP輻輳制御に関する研究成果のリンクを下に示す.
数が非常に多いが,New Reno,Vegas,BIC/CUBIC,Compound TCPなどに関する学習が特に重要であると考えられる.
TCP輻輳制御手法は主に Loss-based 手法,Dealy-based 手法と,両者を組み合わせた Hybrid 型 に分けられるが,
New Renoは古典的な Loss-based である TCP の振る舞いの学習のために,
Vegas は 古典的な Delay-based TCP の学習のために,
BIC/CUBIC は近年評価されている(Linuxでは標準として採用されている) TCP の学習のために,
Compound TCP は Windows Vista に採用されている TCP の学習のために重要であると考えられる.
- New Reno
http://www.ietf.org/rfc/rfc2582.txt - Vegas
http://www.cs.arizona.edu/projects/protocols/
http://www.cs.cornell.edu/courses/cs619/2004fa/documents/brakmo94tcp.pdf - BIC TCP
http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC
http://netsrv.csc.ncsu.edu/export/bitcp.pdf
http://www.ieee-infocom.org/2004/Papers/52_4.PDF - CUBIC
http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC
http://www4.ncsu.edu/~rhee/export/bitcp/cubic-paper.pdf - Compound TCP
http://research.microsoft.com/apps/pubs/default.aspx?id=70189
http://research.microsoft.com/en-us/projects/ctcp/
http://research.microsoft.com/pubs/70189/tr-2005-86.pdf - HighSpeed TCP
http://www.icir.org/floyd/hstcp.html
http://www.ietf.org/rfc/rfc3649.txt - Hamilton TCP
http://www.hamilton.ie/net/htcp/
http://www.hamilton.ie/net/htcp3.pdf - TCP Hybla
https://hybla.deis.unibo.it/
http://www.cs.utk.edu/~dunigan/ipp05/hybla.pdf
http://tools.ietf.org/html/draft-sridharan-tcpm-ctcp-00 - Scalable TCP
http://www.deneholme.net/tom/scalable/
http://www.deneholme.net/tom/papers/scalable_improve_hswan.pdf - TCP Westwood
http://www.cs.ucla.edu/NRL/hpi/tcpw/ - TCP Westwood+
http://c3lab.poliba.it/index.php/Westwood - TCP Veno
http://www3.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf - TCP Low Priority
http://www.ece.rice.edu/networks/TCP-LP/
http://www.ieee-infocom.org/2003/papers/41_04.PDF - YeAH-TCP
http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf
http://infocom.uniroma1.it/~vacirca/yeah/ (実装があるのみで,情報はほとんどない) - TCP-Illinois
http://www.princeton.edu/~shaoliu/tcpillinois/ - FAST TCP
http://netlab.caltech.edu/FAST/
これら TCP 輻輳制御手法の比較として有益なページを以下に示す.
- A Linux TCP implementation for NS2
http://netlab.caltech.edu/projects/ns2tcplinux/ns2linux/ - TCP testing – Preventing global Internet warming
http://www.linuxconf.eu/2007/papers/Hemminger.pdf (論文) - TCP Evaluation Discussion Forum (Experimental TCP Evaluation)
http://www.hamilton.ie/net/eval/
また,以下の日本語個人サイトがTCPの入門に役立つと思われる.
TCPの性能について考察する場合 Sack,RED,ENC,Global Synchronizationなどの技術,現象があり
その理解が必要となるが,
これらの学習に有益と思われるページを以下に示す.
- TCP Selective Acknowledgement Options
http://www.icir.org/floyd/sacks.html - RED (Random Early Detection) Queue Management
http://www.icir.org/floyd/red.html - ECN (Explicit Congestion Notification) in TCP/IP
http://www.icir.org/floyd/ecn.html - ISP Column – June 2005
http://ispcolumn.isoc.org/2005-06/faster.html
TCP以外のトランスポート層プロトコルとして以下の研究がある.
- XCP(The eXplicit Control Protocol)に関して
http://www.isi.edu/isi-xcp/ - SCTP (Stream Control Transmission Protocol) に関して
http://www.ibm.com/developerworks/linux/library/l-sctp/
http://www.sctp.org/
また,コンピュータシステムの話題とは多少ずれるが,通信,ネットワークに関する国際会議としては以下の会議が有名である.
- ACM SIGCOMM
http://www.sigcomm.org/ - INFOCOMM
http://www.infocomm.org/ - ICC と GLOBECOMM
http://www.comsoc.org/confs/icc/
http://www.comsoc.org/confs/globecom/
- PFLDnet
(上記4会議ほど有名でないが,近年注目されている Long Fat Networks に特化した会議)
http://www.hep.man.ac.uk/PFLDnet2008/
http://wil.cs.caltech.edu/pfldnet2007/
http://www.hpcc.jp/pfldnet2006/
http://www.ens-lyon.fr/LIP/RESO/pfldnet2005/
http://www-didc.lbl.gov/PFLDnet2004/
http://datatag.web.cern.ch/datatag/pfldnet2003/
5. 解析,シミュレーションツール
コンピュータシステムの研究を行うにあたり役に立つツールとページを紹介する.
まず,実機を用いて実験を行う際にネットワークのエミュレータとして Dummynet が役に立つ.
FreeBSD Dummynet
- IP_DUMMYNET
http://info.iet.unipi.it/~luigi/ip_dummynet/ (公式ページであるが情報が古い) - FreeBSD Handbook (IPFW)
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.html
TCP/IP パケット(Ethernetフレーム)のダンプと解析の有益なソフト
- Wireshark
http://www.wireshark.org/ - Proxomitron
http://www.proxomitron.info/
計算機上のシミュレーションにより研究を行う場合は,下記の ns2 が有名である.
6. おわりに
我が国が世界1,2の高い科学技術力を誇る技術立国であることに疑いの余地はないと考える.
しかし,情報技術のみに注目した場合欧米の先進国に伍する活躍をしているとは考えにくい.
特にOSなどの基礎技術,基盤技術では大きく後れを取ってしまっている様に思える.
本稿では,コンピュータシステム基盤ソフトウェアの研究や開発に必要,有用となるページやサイトを中心に紹介してきた.
本分野には非常に多くの既存の研究が存在しそれらの調査には多くの時間と労力を要するが,
本稿が我が国に多数いる優秀な研究者達の活躍の助けとなれば幸いである.
付録
付録として著者の専門である iSCSI ストレージに関する研究を行う際に有用となる情報群を紹介しておく.
まず,動作を理解するには,iSCSI,SCSI のプロトコルの仕様の理解が必要となる.
以下に情報源を記す.
- iSCSI の仕様
http://www.ietf.org/rfc/rfc3720.txt - SCSIの仕様
http://ldkelley.com/SCSI2/
また,実環境における検証を行う際に役立つ無料かつオープンソースの iSCSI 実装を紹介する.
- iSCSI実装群
Open-iSCSI (イニシエータ実装)
http://www.open-iscsi.org/ - iSCSI Enterprise Target (ターゲット実装)
http://iscsitarget.sourceforge.net/ - ニューハンプシャー大学IOLのiSCSI実装
http://unh-iscsi.sourceforge.net/ - Intel iSCSI
http://sourceforge.net/projects/intel-iscsi