C/C++/Java言語で開発されたOS研究の性能評価でよく利用されるベンチマークを教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
本記事は以下の記事を理解していることを前提とします.
目次
【C/C++/Java言語】OS研究の性能評価でよく利用されるベンチマーク
C/C++/Java言語で開発されたOS研究の性能評価でよく利用されるベンチマークを紹介します.
主要な参考論文は以下になります.
- An Analysis of Linux Scalability to Many Cores
- An Analysis of Performance Evolution of Linux's Core Operations
- A Comparative Analysis of RTOS and Linux Scalability on an Embedded Many-core Processor
- A large scale analysis of hundreds of in-memory cache clusters at Twitter
- In-Kernel Control-Flow Integrity on Commodity OSes using ARM Pointer Authentication
- Kraken: Leveraging Live Traffic Tests to Identify and Resolve Resource Utilization Bottlenecks in Large Scale Web Services
- Scalable Memory Protection in the PENGLAI Enclave
- The Multikernel: A new OS architecture for scalable multicore systems
- Popcorn: a replicated-kernel OS based on Linux
- JMake: Dependable Compilation for Kernel Janitors
Webアプリケーションのベンチマーク
Webアプリケーションのベンチマークを紹介します.
【C言語】Apache Benchmark(ab)
Apache Benchmark(ab)は,Apache Hypertext Transfer Protocol(HTTP)サーバのベンチマークです.
現在のApacheのインストールがどのように動作するかの印象を与えるように設計されています.
特に,Apacheが一秒間にどれだけのリクエストを処理できるかを測定します.
【Java言語】Apache JMeter
Apache JMeterは,クライアントサーバシステムの性能測定および負荷テストを行うJavaアプリケーションです.
HTTPレスポンスの内容の妥当性を判定することもできるため,性能テストだけでなく機能テストに利用できます.
システムのベンチマーク
システムのベンチマークを紹介します.
システムのベンチマークは,CPUやメモリの性能を測定するために利用されます.
【C言語】Dhrystone
Dhrystoneは,システム(整数)プログラムの性能に注目した合成ベンチマークです.
合成ベンチマークとは,一般的なプログラムを統計的に分析して,その負荷を再現するよう注意深く設計された単純なプログラムです.
Dhrystoneのコードはこちらからダウンロードできます.
【C言語】Embedded Microprocessor Benchmark Consortium(EEMBC)
Embedded Microprocessor Benchmark Consortium(EEMBC)は,組込みシステムで使われるハードウェアやソフトウェアの性能指標となるベンチマークを策定する非営利業界団体です.
EEMBCで策定している代表的なベンチマークは以下になります.
- ADASMark
- AudioMark
- AndEBench-Pro
- AutoBench
- BrowsingBench
- CoreMark
- CoreMark-PRO
- DENBench
- FPMark
- IoTMark(IoTMark-BLE,IoTMark-Wi-Fi)
- MLMark
- MultiBench
- Networking
- OABench
- TeleBench
- SecureMark
- ULPMark
【C言語】Memcached
Memcachedは,汎用分散メモリキャッシングシステムです.
データベースやAPIなどの外部データソースの読み込み回数を減らすためにデータやオブジェクトをRAMにキャッシュすることで,動的なデータベース駆動型ウェブサイトを高速化するためによく使われます.
Memcached Architectureの解説動画はこちらです.
【C言語】NAS Parallel Benchmarks(NPB)
NAS Parallel Benchmarks(NPB)は,NASAが開発している並列スーパーコンピュータの性能を評価するために設計されたベンチマークです.
NPBのベンチマークは以下になります.
- MultiGrid(MG)
- Conjugate Gradient(CG)
- Fast Fourier Transform(FT)
- Integer Sort(IS)
- Embarrassingly Parallel(EP)
- Block Tridiagonal(BT)
- Scalar Pentadiagonal(SP)
- Lower-Upper symmetric Gauss-Seidel(LU)
- Unstructured Adaptive(UA)
- Data Cube operator(DC)
- Data Traffic(DT)
【C/C++言語】PARSEC Benchmark Suite
PARSEC Benchmark Suiteは,マルチスレッドプログラムで構成されるベンチマークスイートです.
PARSECは,チップ型マルチプロセッサ向けの次世代共有メモリプログラムの代表として,新しいワークロードに焦点を当てて設計されています.
※PARSECは,Princeton Application Repository for Shared-Memory Computersの略です.
PARSEC Benchmark Suiteのベンチマークは以下になります.
- blackscholes
- bodytrack
- canneal
- dedup
- facesim
- ferret
- fluidanimate
- freqmine
- raytrace
- streamcluster
- swaptions
- vips
- x264
【C/C++/Java言語】SPEC Benchmarks
SPEC Benchmarksは,最新世代のコンピューティングシステムの性能とエネルギー効率を評価するための標準的なベンチマークです.
2022年9月現在のベンチマークは以下になります.
- Cloud
- SPEC Cloud IaaS 2018
- CPU
- SPEC CPU 2017
- Graphics and Workstation Performance
- SPECviewperf 2020
- SPECworkstation 3.1
- SPECapc for Maya 2017
- SPECapc for PTC Creo 3.0
- SPECapc for Solidworks 2021
- SPECapc for Solidworks 2020
- High Performance Computing: OpenMP, MPI, OpenACC, OpenCL
- SPEC ACCEL
- SPEChpc 2021
- SPEC MPI 2007
- SPEC OMP 2012
- Java Client/Server
- SPECjbb 2015
- SPECjEnterprise 2018 Web Profile
- SPECjEnterprise 2010
- SPECjvm 2008
- Storage
- SPECpower_ssj 2008
- Other SPEC benchmarks incorporating power measurement
- SPEC ACCEL
- SPEC Chauffeur WDK
- SPEC CPU 2017
- SPEC Server Efficiency Rating Tool(SERT)
- SPEC OMP 2012
- SPEC VIRT_SC 2013
- Virtualization
- SPECvirt Datacenter 2021
- SPEC VIRT_SC 2013
- SPEC Tools
- SPEC SERT Suite 2.0
- SPEC SERT Suite 1.1.1
- SPEC Chauffeur WDK Tool
- PTDaemon
【C++言語】SPLASH-2
SPLASH-2は,スタンフォード大学で開発された並列共有メモリアプリケーション向けベンチマークのことです.
※SPLASHはStanford Parallel Applications for Shared-Memoryの略です.
SPLASH-2にはフルアプリケーションとカーネルの2種類のコードが含まれています.
Linuxのベンチマーク
Linuxのベンチマークを紹介します.
【C言語】LEBench
LEBenchは,Linuxカーネル向けマイクロベンチマークです.
具体的には,LEBenchは以下の項目を評価します.
- contextswitch
- small-read
- med-read
- big-read
- small-write
- med-write
- big-write
- mmap
- small-munmap
- med-munmap
- big-munmap
- fork
- big-fork
- thrcreate
- send & recv
- big-send & recv
- select
- poll
- epoll
- big-select
- big-poll
- big-epoll
- small-pagefault
- big-pagefaut
SOSP 2019でのLEBenchの講演動画はこちらです.
【C言語】Timed Linux Kernel Compilation
Timed Linux Kernel Compilationは,Linuxカーネルのビルド時間を計測する性能評価手法です.
Linuxカーネルは数十分~1時間程度かかるので,カーネルのスケジューラが重要になります.
Linuxカーネルのビルド方法を知りたいあなたはこちらからどうぞ.
参考:PC(主にWindows,macOS)用のベンチマーク
OS研究ではないですが,PC(主にWindows,macOS)用のベンチマークは以下の記事で紹介されています.
あなたのPCの性能を測定したい時におすすめです!
まとめ
C/C++/Java言語で開発されたOS研究の性能評価でよく利用されるベンチマークを紹介しました.
OS研究に是非利用しましょう!
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!