63
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 165夜な夜な!なにわオラクル塾 Oracle×Sun 22Hadoop Cluster Solaris11 を使用した マルチテナント・クラウド環境での パーフォーマンス分析 Oracle Confidential Restricted クラウド・システム事業統括 2016/4/6

第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

第165回 夜な夜な!なにわオラクル塾 Oracle×Sun 第22弾 Hadoop Cluster と Solaris11 を使用した マルチテナント・クラウド環境での パーフォーマンス分析

Oracle Confidential – Restricted

クラウド・システム事業統括 2016/4/6

Page 2: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 2

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。

Page 3: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 3

目次

はじめに 1

2

3

4

5

6

7

Hadoopについて

仮想化環境でのCPUワークロードの監視

仮想化環境でのディスクI/Oアクティビティの監視

仮想化環境でのメモリー使用状況の監視 仮想化環境でのネットワーク使用状況の監視

最後に

Page 4: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 4

はじめに

Oracle Solaris 11 には、仮想化されたマルチテナント・クラウド環境でパフォーマンス分析を実施するための一連の新しいコマンドが付属しています。さまざまなユーザーが 各種のワークロードを実行する仮想化されたマルチテナント・クラウド環境でのパフォーマンス分析は困難な作業です。その理由は次のとおりです。

Oracle Confidential – Internal/Restricted/Highly Restricted

仮想化ソフトウェアのタイプごとに、管理性を高めるための抽象化レイヤーが追加されます。抽象化レイヤーの追加によって仮想化されたリソースの管理は大幅に容易になりますが、過負荷状態の物理的なシステム・リソースを見つけることが難しくなります。 通常、Oracle Solaris ゾーンごとにワークロードが異なります。このワークロードは、ディスク I/O、ネットワーク I/O、CPU、メモリ、あるいはそれらの組合 せの場合もあります。さらに、単一の Oracle Solaris ゾーンがシステム・リソース全体の過負荷状態の原因となる可能性もあります。

環境の観測は非常に困難で、環境をトップ・レベルから監視してすべての仮想インスタンス(非大域ゾーン)をリアルタイムで確認でき、さらに特定のリソースにドリルダウンできる必要があります。

Page 5: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 5

Oracle Solaris 11を使用して仮想化されたパフォーマンス分析 を実行するメリットは次のとおりです。

Oracle Confidential – Internal/Restricted/Highly Restricted

可観測性:Oracle Solaris大域ゾーンは、環境全体(同時にホストやVMを含む)を観測できない独自のハイパーバイザや最小限のオペレーティング・システムではなく、 完全に機能するオペレーティング・システムです。大域ゾーンから、すべての非大域ゾーンのパフォーマンス・メトリックを確認できます。

統合:すべてのサブシステムが同じオペレーティング・システムの内部に組み込まれます。たとえば、ZFSファイル・システムとOracle Solaris Zones仮想化テクノロジーが一緒に統合されています。これは、多くのベンダーのテクノロジーが混在する状況よりも望ましいことです。テクノロジーが混 在すると、異なるオペレーティング・システム(OS)サブシステム間で統合できなくなり、異なるすべてのOSサブシステムを同時に分析することが非常に困 難になります。

仮想化の認識:Oracle Solaris大域ゾーンは、環境全体(同時にホストやVMを含む)を観測できない独自のハイパーバイザや最小限のオペレーティング・システムではなく、 完全に機能するオペレーティング・システムです。大域ゾーンから、すべての非大域ゾーンのパフォーマンス・メトリックを確認できます。

Page 6: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 6 Oracle Confidential – Internal/Restricted/Highly Restricted

今回の内容につきまして

今回は4つの例を詳しく見ていきながら、Oracle Solaris 11 の組込みツールを使用してOracle Solaris Zones による仮想化環境を監視する方法について説明します。これらのツールには、CPU、メモリ、ディスク、ネットワークなどの特定のリソースにドリルダウンする機能があります。また、Oracle Solaris ゾーンごとに統計を出力する機能や、実行中のアプリケーションに関する情報を出力機能もあります。

この例では、CPU、ディスク、ネットワークのワークロードを対象とした Hadoop MapReduce ベンチマークを使用します。

Page 7: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 7

Hadoopについて

Apache Hadoopソフトウェアは、シンプルなプログラミング・モデルによってコンピュータの複数のクラスタにわたる大規模データセットを分散処理することを可能にするフレームワークです。 データを格納するために、Hadoopでは、Hadoop分散ファイル・システム(HDFS)が使用されます。HDFSは、優れたスループットでのアプリケーション・データへのアクセスを実現するため、大規模なデータセットを持つアプリケーションに適しています。 HadoopおよびHDFSについて詳しくは、http://hadoop.apache.org/を参照してください。

Page 8: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 8

Hadoop の構成要素

ネームノード HDFSの中核部分であり、ファイル・システム・メタデータが格納されます。スレーブ・データノード・デーモンに下位のI/Oタスクを実行するように命令します。また、JobTrackerプロセスを実行します。

セカンダリ・ネームノード ネームノード・トランザクション・ログの内部チェックを実行します。

データノード HDFSでデータを格納するノードです。スレーブとも呼ばれ、TaskTrackerプロセスを実行します。

Page 9: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 9

Hadoop のサンプルプログラムの実行

hadoop@name-node:$ hadoop jar /usr/local/hadoop/hadoop-examples-1.2.1.jar ¥ wordcount /input-data/pg20417.txt /output-data/output1

大容量テキストファイル テキスト・ファイルを読み取って単語の出現回数をカウントするWordCountを使用します。入力と出力はテキスト・ファイル で構成され、テキスト・ファイルの各行には、単語とその単語の出現回数がタブで区切って示されます。WordCountについて詳しくは、http://wiki.apache.org/hadoop/WordCountを参照してください。

Page 10: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 10

15/07/23 22:18:01 INFO input.FileInputFormat: Total input paths to process : 1 15/07/23 22:18:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 15/07/23 22:18:01 WARN snappy.LoadSnappy: Snappy native library not loaded 15/07/23 22:18:05 INFO mapred.JobClient: Running job: job_201507071940_0005 15/07/23 22:18:06 INFO mapred.JobClient: map 0% reduce 0% 15/07/23 22:18:12 INFO mapred.JobClient: map 100% reduce 0% 15/07/23 22:18:19 INFO mapred.JobClient: map 100% reduce 33% 15/07/23 22:18:22 INFO mapred.JobClient: map 100% reduce 100% 15/07/23 22:18:23 INFO mapred.JobClient: Job complete: job_201507071940_0005 15/07/23 22:18:23 INFO mapred.JobClient: Counters: 26 15/07/23 22:18:23 INFO mapred.JobClient: Job Counters 15/07/23 22:18:23 INFO mapred.JobClient: Launched reduce tasks=1 15/07/23 22:18:23 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=5738 15/07/23 22:18:23 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0 15/07/23 22:18:23 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0 15/07/23 22:18:23 INFO mapred.JobClient: Launched map tasks=1 15/07/23 22:18:23 INFO mapred.JobClient: Data-local map tasks=1 15/07/23 22:18:23 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=9916 15/07/23 22:18:23 INFO mapred.JobClient: File Output Format Counters 15/07/23 22:18:23 INFO mapred.JobClient: Bytes Written=194409 15/07/23 22:18:23 INFO mapred.JobClient: FileSystemCounters 15/07/23 22:18:23 INFO mapred.JobClient: FILE_BYTES_READ=264608 15/07/23 22:18:23 INFO mapred.JobClient: HDFS_BYTES_READ=648600 15/07/23 22:18:23 INFO mapred.JobClient: FILE_BYTES_WRITTEN=640655 15/07/23 22:18:23 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=194409 15/07/23 22:18:23 INFO mapred.JobClient: File Input Format Counters 15/07/23 22:18:23 INFO mapred.JobClient: Bytes Read=648496 15/07/23 22:18:23 INFO mapred.JobClient: Map-Reduce Framework 15/07/23 22:18:23 INFO mapred.JobClient: Map output materialized bytes=264608 15/07/23 22:18:23 INFO mapred.JobClient: Map input records=12469 15/07/23 22:18:23 INFO mapred.JobClient: Reduce shuffle bytes=264608 15/07/23 22:18:23 INFO mapred.JobClient: Spilled Records=35750 15/07/23 22:18:23 INFO mapred.JobClient: Map output bytes=1066581

入力ディレクトリ(上記のコマンドラインの /input-data/pg20417.txt)のファイルが読み取られ、 入力の単語の出現回数が出力ディレクトリ(/output-data/output1と呼ばれる)に書き込まれます。

出力内容

Page 11: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 11

実行結果 結果を確認します

hadoop@name-node:$ hadoop fs –cat /output/output1/part-r-00000 "A 2 "Alpha 1 "Alpha," 1 "An 2 "And 1 "BOILING" 2 "Batesian" 1 "Beta 2 --------------------------- ---------------------------

Page 12: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 12

HDFS (Hadoop Distributed File System)

ホームディレクトリ

/home/hadoop

data-node1

hadoop fs –put <src> <dest>

hadoop fs –get <src> <dest>

data-node2

data-node3

通常ファイルシステムから HDFS へコピー

HDFS から通常ファイルシステムにコピー

/input /output

Page 13: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 13

今回構成図 Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化 テクノロジーを使用してインストールしました。そのアーキテクチャを図1に示します。

Sun Fire X4140

Page 14: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 14

root@x4140:~# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 1 data-node2 running /zones/data-node2 solaris excl 2 data-node3 running /zones/data-node3 solaris excl 3 data-node1 running /zones/data-node1 solaris excl 4 name-node running /zones/name-node solaris excl 5 sec-name-node running /zones/sec-name-node solaris excl

仮想マシンの確認

この環境には次の5つの Oracle Solaris ゾーンがあります。

name-node : ネームノード sec-name-node : セカンダリーネームノード data-node1 : データノード data-node2 : データノード data-node3 : データノード

Page 15: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 15

Oracle Solarisでのマルチスレッド認識を利用してシステムの使用状況を改善するために、 Hadoopゾーンあたり2個のジョブ・スロット(合計6個)を有効化します。そのために、/usr/local/hadoop/conf/mapred-site.xml に次のプロパティを追加します。

<property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>2</value> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>2</value> </property>

Page 16: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 16

現在の Hadoop クラスタの状態を確認します

root@x4140:~# zlogin -l hadoop name-node hadoop dfsadmin -report Oracle Corporation SunOS 5.11 11.2 June 2014 Configured Capacity: 334816139776 (311.82 GB) Present Capacity: 332184168448 (309.37 GB) DFS Remaining: 332181390336 (309.37 GB) DFS Used: 2778112 (2.65 MB) DFS Used%: 0% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 ------------------------------------------------- Datanodes available: 3 (3 total, 0 dead)

3つのDatanodeが使用可能です

Page 17: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 17

ブラウザでも クラスタの状態を確認します

Page 18: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 18

DataNodeとは、Hadoop分散ファイル・システム(HDFS)でデータが格納されるノードのことです。DataNodeはスレーブとも呼ばれ、下図に示すTask Trackerプロセスを実行します

Page 19: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 19

あらゆるパフォーマンス分析におけるベスト・プラクティスは、どのリソースがもっとも負荷が高いかを確認するために実行環境を大局的に把握し、その後それ ぞれのリソースにドリルダウンすることです。以下に、CPUパフォーマンス分析で使用する主なるコマンドの概要を示します。

コマンド 説明

psrinfo プロセッサ情報を表示する

zonestat アクティブなゾーンの統計をレポートする

mpstat プロセッサごとの統計またはプロセッサ・セットごとの統計をレポートする

fsstat ファイル・システムの統計をレポートする

vmstat 仮想メモリの統計とCPUアクティビティをレポートする

ps プロセスの統計をレポートする

pginfo CPUトポロジを出力する

pgstat プロセッサの使用統計をレポートする

prstat アクティブなプロセスの統計をレポートする

Page 20: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 20

まず、物理的なリソース情報を取得します。CPUはいくつあるでしょうか。

root@x4140:~# psrinfo -pv The physical processor has 4 virtual processors (0-3) x86 (AuthenticAMD 100F42 family 16 model 4 step 2 clock 2700 MHz) Quad-Core AMD Opteron(tm) Processor 2384 [ Socket: F(1207) ] The physical processor has 4 virtual processors (4-7) x86 (AuthenticAMD 100F42 family 16 model 4 step 2 clock 2700 MHz) Quad-Core AMD Opteron(tm) Processor 2384 [ Socket: F(1207) ]

AMD製の Opteron プロセッサがあり、そのCPUの2つが割当て済みであることが分かります。このCPUには4個のコアと2個の仮想プロセッサ(があるため、最大8個のソフトウェア・スレッドを同時に実行できます。 psrinfo –p コマンドを使用すれば、物理的なCPUの数を把握できます。

root@x4140:~# psrinfo -p 2

Page 21: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 21

パフォーマンス分析を開始する前に、それぞれの Oracle Solaris ゾーンのワークロード特性を理解し、CPU、メモリ、ディスクI/O、ネットワークI/Oのうち、どの制約を受けるかを判断する必要があります。そのために、Oracle Solaris 11 の zonestat、mpstat、fsstat の各コマンドを使用します。次に、これらのコマンドの出力を使用して、この環境内で実行中のワークロードについて分析します。

環境に負荷をかけるために実行する第1のHadoopベンチマークは、Pi Estimatorです。Pi Estimatorは、モンテカルロ法により円周率の値を推定するMapReduceプログラムです。今回は、128個のマップを使用し、各マップでは10億のサンプルを計算します(サンプルの総数は1,280億になります)。

Page 22: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 22

大域ゾーンから次のコマンドを実行して、Pi Estimatorプログラムを開始します。

root@x4140:~# zlogin -l hadoop name-node hadoop jar ¥ /usr/local/hadoop/hadoop-examples-1.2.1.jar pi 128 1000000000

コマンドの意味は次のとおりです。

上のコマンドは、zloginコマンドを使用し、大域ゾーンに対して実行します。一方、次のようにname-nodeゾーンから直接コマンドを実行することもできます。

hadoop@name-node:$ hadoop jar /usr/local/hadoop/hadoop-examples-1.2.1.jar pi 128 1000000000

コマンド 説明

zlogin -l hadoop name-node このコマンドをユーザーhadoopとして、name-nodeゾーンに対して実行することを指定する

hadoop jar /usr/local/hadoop/hadoop-examples-1.2.0.jar pi Hadoopの.jarファイルを指定する

128 マップ数を指定する

1000000000 サンプル数を指定する

Page 23: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 23

hadoop job -listコマンドを使用して、MapReduceジョブを一覧表示できます。

root@x4140:~# zlogin -l hadoop name-node hadoop job -list Oracle Corporation SunOS 5.11 11.2 June 2014 1 jobs currently running JobId State StartTime UserName Priority SchedulingInfo job_201603221813_0006 1 1459154225355 hadoop NORMAL NA

ジョブの完全な説明(MapReduce 処理が完了した割合やすべてのジョブ・カウンタなど)については、次のコマンドを実行します。その際に、hadoop job -statusコマンドのパラメータとしてJobIdを指定します。

root@x4140:~# zlogin -l hadoop name-node hadoop job -status job_201603221813_0006

Page 24: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 24

このパフォーマンス分析で使用する1つ目のコマンドは、zonestatコマンドです。このコマンドを使用すれば、環境で実行中のすべてのOracle Solarisゾーンを監視して、CPU、メモリ、ネットワークの使用状況に関するリアルタイム統計を表示できます。zonestatコマンドを10秒間隔で実行します。

root@x4140:~# zonestat 10 10 Collecting data for first interval... Interval: 1, Duration: 0:00:10 SUMMARY Cpus/Online: 8/8 PhysMem: 31.9G VirtMem: 35.9G ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 6.11 76.4% 5089M 15.5% 6365M 17.2% 626 0.00% [system] 0.03 0.41% 2285M 6.97% 2875M 7.80% - - data-node1 2.00 25.0% 640M 1.95% 793M 2.15% 0 0.00% data-node2 2.00 25.1% 712M 2.17% 903M 2.44% 0 0.00% data-node3 2.00 25.0% 633M 1.93% 790M 2.14% 0 0.00% global 0.04 0.61% 290M 0.88% 334M 0.90% 626 0.00% name-node 0.00 0.10% 358M 1.09% 455M 1.23% 0 0.00% sec-name-node 0.00 0.01% 167M 0.51% 213M 0.57% 0 0.00%

Page 25: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 25

このzonestatコマンドが出力している情報は次のとおりです。

zonestatコマンドは、特定の期間における使用状況の総計および最高値に関するレポートを出力できます。この情報は、 ピーク時の使用状況を確認する場合に便利です。この情報は、現在のアクティビティと以前のアクティビティとの比較、および今後の拡張に向けたキャパシ ティ・プランニングで役立ちます

ZONE [zone名]

[total] システム全体で使用されているリソースの総量

[system] カーネルによって使用されているか、特定のゾーンには関連付けられずに使用されているリソースの量

CPU [CPU情報]

USED 使用されているCPUの数

%PART ゾーンがバインドされているプロセッサ・セットの計算能力に対するCPU使用率(%)

PhysMem [物理メモリ情報]

USED 使用済みメモリ

%USED リソース総量に対する使用済みリソースの割合(%)

VirtMem [仮想メモリ情報]

USED 使用済み仮想メモリ

%USED システム内の仮想メモリ総量に対する使用済みリソースの割合(%)

PhysNet [ネットワーク情報]

PBYTE 物理帯域幅を消費する送受信済みバイト数

%PUSH 利用可能な物理帯域幅の総量に対する送受信された総バイト数の割合(%)

Page 26: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 26

以下のコマンドは、10秒間隔で1分間サイレントに監視を行い、その後、使用状況の総計と最高値を示すレポートを生成します。

root@x4140:~# zonestat -q -R total,high 10s 1m Report: Total Usage Start: 2016年03月28日 (月) 19時35分54秒 JST End: 2016年03月28日 (月) 19時38分54秒 JST Intervals: 18, Duration: 0:03:00 SUMMARY Cpus/Online: 8/8 PhysMem: 31.9G VirtMem: 35.9G ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 6.21 77.7% 5027M 15.3% 6279M 17.0% 123 0.00% [system] 0.05 0.70% 2287M 6.98% 2864M 7.77% - - data-node3 2.04 25.5% 623M 1.90% 846M 2.29% 0 0.00% data-node1 2.02 25.3% 615M 1.87% 779M 2.11% 0 0.00% data-node2 2.02 25.3% 633M 1.93% 784M 2.12% 0 0.00% global 0.04 0.61% 290M 0.88% 334M 0.90% 180 0.00% name-node 0.00 0.09% 358M 1.09% 455M 1.23% 0 0.00% sec-name-node 0.00 0.00% 167M 0.51% 213M 0.58% 0 0.00% CPUの使用率の平均は 77.7%

利用可能な各CPUに対してCPU使用率が均等に配分されているかを確認 できます。

Page 27: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 27

Report: High Usage Start: 2016年03月28日 (月) 19時35分54秒 JST End: 2016年03月28日 (月) 19時38分54秒 JST Intervals: 18, Duration: 0:03:00 SUMMARY Cpus/Online: 8/8 PhysMem: 31.9G VirtMem: 35.9G ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 6.51 81.4% 5184M 15.8% 6391M 17.3% 146K 0.00% [system] 0.18 2.30% 2370M 7.23% 2873M 7.79% - - data-node1 2.00 25.1% 633M 1.93% 788M 2.13% 0 0.00% data-node2 2.00 25.1% 635M 1.94% 783M 2.12% 0 0.00% data-node3 2.00 25.0% 623M 1.90% 786M 2.13% 0 0.00% global 0.05 0.69% 290M 0.88% 334M 0.90% 730 0.00% name-node 0.00 0.11% 358M 1.09% 455M 1.23% 0 0.00% sec-name-node 0.00 0.01% 167M 0.51% 213M 0.57% 0 0.00%

CPUの使用率の最高は 81.4%

CPU総数に対してData-nodeは均等数割り当てられている

Page 28: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 28

zonestatコマンドは、長期間(数日、数週、数か月)のシステム使用状況の情報を収集する目的にも使用できます。たとえば、次のコマンドは、10秒間隔で24時間サイレントに監視を行い、1時間ごとの使用状況の総計と最高値のレポートを生成します。

root@x4140:~# zonestat -q -R total,high 10s 24h 1h

利用可能な各CPUに対してCPU使用率が均等に配分されているかを示す便利なコマンドとして、ほかにmpstatコマンドがあります。以下は Oracle Solaris mpstat(1M)コマンドの出力です。1行につき1つの仮想CPUが示されています。-A soc オプションでソケット単位、-A core でコア単位の出力が可能です。

root@x4140:~# mpstat 1 CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys st idl 0 6 0 1 417 130 166 1 23 5 0 74 1 1 0 98 1 6 0 1 126 37 129 1 12 3 0 84 2 1 0 98 2 6 0 1 165 34 163 1 23 5 0 76 2 1 0 98 3 6 0 1 133 45 127 1 12 5 0 86 2 1 0 98 4 5 0 3 103 32 109 1 6 3 0 95 2 1 0 97 5 6 0 2 154 39 149 1 18 5 0 127 2 1 0 98 6 6 0 4 97 31 101 1 6 3 0 112 2 1 0 97 7 6 0 2 147 31 151 1 18 5 0 124 1 1 0 98

root@x4140:~# mpstat -A soc SOC minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys st idl sze 0 60 0 56 931 256 659 34 76 32 0 419 10 4 0 386 4 1 58 0 52 579 142 569 29 55 28 0 688 10 4 0 386 4

Page 29: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 29

mpstatコマンドは次の情報をレポートします

CPU列 論理 CPU ID

minf列 マイナー・フォルトの回数

mjf列 メジャー・フォルトの回数

xcal列 プロセッサ間のクロスコール数

intr列 割込み回数

ithr列 スレッドとして使用された割込み回数(低レベルIPL)

csw列 コンテキスト・スイッチの回数(総数)

icsw列 強制的なコンテキスト・スイッチの回数

migr列 別のプロセッサへのスレッド移送回数

smtx列 mutexロックでのスピン回数

srw列 読取り/書込みロックでのスピン回数

syscl列 システム・コール数

usr列 CPUによって使用されたユーザー時間の割合(%)

sys列 CPUによって使用されたシステム時間(カーネル)の割合(%)

wt列 I/O待機時間(廃止予定のため、常にゼロ)

idl列 アイドル時間の割合(%)

Page 30: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 30

このパフォーマンス分析で次に使用するコマンドは fsstat コマンドです。このコマンドはディスク I/O の監視に便利 です。このコマンドを使用して、ディスクごと、あるいは Oracle Solaris ゾーンごとのディスクI/Oアクティビティを監視できます。ここでは、このコマンドを使用して、Pi Estimator が CPU の制約を受けるのに加えてディスク I/O の制約も受けるかどうかを確認します。たとえば、以下のコマンドを使用すれば、すべての ZFS ファイル・システムへの書込みを10秒間隔で監視できます。

root@x4140:~# fsstat -Z zfs 10 10 new name name attr attr lookup rddir read read write write file remov chng get set ops ops ops bytes ops bytes 0 0 0 1.34K 0 12.5K 0 5.16K 4.44M 2 138 zfs:global 2 0 2 2.41K 0 27.2K 74 5.55K 8.04M 38 6.10K zfs:data-node2 0 0 0 161 0 2.45K 0 53K 51.2K 12 2.01K zfs:data-node3 1 0 1 1.41K 0 17.1K 37 3.50K 5.00M 26 4.35K zfs:data-node1 0 0 0 0 0 0 0 0 0 12 9.6K zfs:name-node 0 0 0 0 0 0 0 0 0 0 0 zfs:sec-name-node

Page 31: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 31

デフォルトのレポートにはファイル・システムの一般的なアクティビティが示されます。リスト7に示すように、この出力では、類似した操作が次の一般的なカテゴリにまとめられます。

fsstatの出力より、読取り操作と書込み操作の回数を確認すると、 ディスク使用率が非常に低いことが分かります。

new file列 ファイル・システム・オブジェクト(ファイル、ディレクトリ、シンボリック・リンクなど)の作成操作の回数

name remov列 名前の削除操作の回数

name chng列 名前の変更操作の回数

attr get列 オブジェクト属性の取得操作の回数

attr set列 オブジェクト属性の変更操作の回数

lookup ops列 オブジェクトのルックアップ操作の回数

rddir ops列 ディレクトリ読取り操作の回数

read ops列 データ読取り操作の回数

read bytes列 データ読取り操作による送信済みバイト数

write ops列 データ書込み操作の回数

write bytes列 データ書込み操作による送信済みバイト数

Page 32: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 32

zonestat、mpstat、fsstatの出力に従えば、Pi EstimatorプログラムはCPUの制約を受けるアプリケーションであるという結論に達します(この2つ目の例のディスクI/Oワークロードの把握方法については後ほど詳しく説明します)。CPUパフォーマンス分析を続けます。次に検討する課題は、CPUアイドル時間が存在するかどうかです。

root@x4140:~# vmstat 1 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 s3 in sy cs us sy id 0 0 0 27751608 24857372 18 47 0 0 0 0 0 0 0 0 0 1905 1790 1585 76 0 24 0 0 0 27751608 24857260 0 2 0 0 0 0 0 0 0 0 0 1704 845 1346 75 1 24 0 0 0 27751608 24857260 0 0 0 0 0 0 0 78 0 42 0 2125 1010 1752 75 1 24 0 0 0 27751608 24857260 0 0 0 0 0 0 0 36 0 33 0 2081 899 1679 75 1 24 0 0 0 27757640 24855232 0 14 0 0 0 0 0 0 0 0 0 1964 1806 1604 75 1 24 1 0 0 27757640 24855232 0 0 0 0 0 0 0 0 0 0 0 1973 1134 1580 76 1 24 1 0 0 27757640 24855232 0 0 0 0 0 0 0 0 0 0 0 1891 1057 1517 75 1 24 0 0 0 27757640 24855232 0 8 0 0 0 0 0 63 0 34 0 2227 927 1684 75 1 24 1 0 0 27757640 24855232 0 3 0 0 0 0 0 62 0 42 0 2166 1004 1742 75 1 24 1 0 0 27769852 24855268 0 24 0 0 0 0 0 0 0 0 0 2153 2258 1900 76 1 24 1 0 0 27769852 24855268 0 0 0 0 0 0 0 0 0 0 0 1935 1004 1418 75 1 24 0 0 0 27769852 24855268 0 3 0 0 0 0 0 0 0 0 0 1961 1008 1500 75 0 24

id列にCPUアイドル時間が示されます。id列の値が0の場合、システムのCPUは100%のビジー状態です。

Page 33: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 33

次の課題は、利用可能なCPUを待機しているスレッドがあるかどうかです。これは実行キュー待機時間と呼ばれるもので、r列で容易に追跡できます。この列には、実行キュー内のカーネル・スレッド数が出力されます。実行キュー待機時間は、prstat -LmZコマンドを使用してLAT列の値を調べることで追跡することもできます。

root@x4140:~# prstat -LmZ PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID ----------------------------------------------------------------------------- 6532 hadoop 100 0.1 0.0 0.0 0.0 0.0 0.0 0.2 1 201 0 0 java/2 6549 hadoop 99 0.1 0.0 0.0 0.0 0.8 0.0 0.1 3 166 12 2 java/2 6546 hadoop 99 0.1 0.0 0.0 0.0 0.9 0.0 0.1 5 188 12 2 java/2 6536 hadoop 99 0.1 0.0 0.0 0.0 0.9 0.0 0.3 3 190 13 2 java/2 6543 hadoop 97 0.0 0.0 0.0 0.0 2.3 0.0 0.2 3 299 11 2 java/2 6544 hadoop 97 0.0 0.0 0.0 0.0 2.2 0.0 0.3 3 271 11 2 java/2 6560 root 0.1 4.0 0.0 0.0 0.0 0.0 96 0.0 16 1 1K 0 prstat/1 6543 hadoop 2.3 0.0 0.0 0.0 0.0 98 0.0 0.0 10 2 30 0 java/11 6544 hadoop 2.2 0.0 0.0 0.0 0.0 98 0.0 0.0 8 9 28 0 java/11 6546 hadoop 0.8 0.0 0.0 0.0 0.0 99 0.0 0.1 11 3 37 0 java/11 6536 hadoop 0.8 0.0 0.0 0.0 0.0 99 0.0 0.0 10 0 34 0 java/11 6549 hadoop 0.8 0.0 0.0 0.0 0.0 99 0.0 0.0 10 14 34 0 java/11 6544 hadoop 0.7 0.0 0.0 0.0 0.0 99 0.0 0.0 1 1 2 0 java/16 6536 hadoop 0.7 0.0 0.0 0.0 0.0 99 0.0 0.0 1 3 2 0 java/15 6549 hadoop 0.7 0.0 0.0 0.0 0.0 99 0.0 0.0 1 0 2 0 java/16 ZONEID NLWP SWAP RSS MEMORY TIME CPU ZONE ------------------------------------------------------------------------ 11 262 902M 657M 2.0% 0:12:29 20% data-node1 12 263 805M 621M 1.9% 0:12:27 20% data-node2 13 266 780M 592M 1.8% 0:12:07 20% data-node3 0 629 348M 278M 0.8% 2:04:42 0.4% global 15 256 505M 387M 1.2% 0:13:31 0.2% name-node Total: 256 processes, 1842 lwps, load averages: 2.76, 0.76, 0.32

Page 34: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 34

prstatの出力には次の列が表示されます。

prstatの出力によると、システムのCPUサイクルはユーザー・モード(USR)で消費されています。その他のprstatの例については、http://www.scalingbits.com/performance/prstatを参照してください。

USR列 プロセスがユーザー・モードで使用された時間の割合(%)

SYS列 プロセスがシステム・モードで使用された時間の割合(%)

TRP列 プロセスがシステム・トラップの処理で使用された時間の割合(%)

TFL列 プロセスがテキスト・ページ・フォルトの処理で使用された時間の割合(%)

DFL列 プロセスがデータ・ページ・フォルトの処理で使用された時間の割合(%)

LCK列 プロセスがユーザー・ロックの待機で使用した時間の割合(%)

SLP列 プロセスが休止中であった時間の割合(%)

LAT列 プロセスがCPUの待機で使用した時間の割合(%)

VCX列 自発的なコンテキスト・スイッチの回数

ICX列 強制的なコンテキスト・スイッチの回数

SCL列 システム・コール数

SIG列 受信済みシグナル数

Page 35: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 35

仮想化認識型の便利なコマンドとして、psもあります。-Zオプションを使用すると、ZONE列ヘッダーが加わり、その下にプロセスが関連付けられているゾーンの名前が出力されます。

注:このコマンドは、自身が非大域ゾーン内部で実行中であることを認識します。そのため、このコマンドを非大域ゾーンから実行した場合に他のユーザー・プロセスを参照することはできません。

ps -efZコマンドを使用すると、現在実行中のすべてのプロセス(e)と、関連付けられたゾーン名(Z)が完全な形式で(f)表示されます。たとえば、現在実行中のすべてのHadoopプロセスを出力するには、以下のコマンドを使用します。

root@x4140:/opt# ps -efZ | grep hadoop data-nod hadoop 13341 12092 11 21:48:07 ? 0:52 /usr/jdk/instances/jdk1.6.0/jre/bin/java -Djava.library.path=/usr/local/hadoop- name-nod hadoop 11594 11592 0 21:22:48 ? 0:08 /usr/java/bin/java -Dproc_jar -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop -Dhado name-nod hadoop 11600 1 0 3月 22日 ? 12:01 /usr/java/bin/java -Dproc_namenode -Xmx1000m -Dcom.sun.management.jmxremote -Dc name-nod hadoop 11933 1 0 3月 22日 ? 36:34 /usr/java/bin/java -Dproc_jobtracker -Xmx1000m -Dcom.sun.management.jmxremote - data-nod hadoop 13319 12092 12 21:48:04 ? 0:54 /usr/jdk/instances/jdk1.6.0/jre/bin/java -Djava.library.path=/usr/local/hadoop-

注: ZONE列の幅には8文字の上限があります。

Page 36: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 36

pginfo -p -Tコマンドを使用すれば、CPUトポロジを確認できます。詳しくは、https://blogs.oracle.com/d/entry/pginfo_pgstatを参照してください。

root@x4140:~# pginfo -p -T 0 (System [system]) CPUs: 0-7 |-- 1 (Socket [chip]) CPUs: 0-3 | |-- 2 (CPU_PM_Active_Power_Domain) CPU: 0 | |-- 3 (CPU_PM_Active_Power_Domain) CPU: 1 | |-- 4 (CPU_PM_Active_Power_Domain) CPU: 2 | `-- 5 (CPU_PM_Active_Power_Domain) CPU: 3 `-- 6 (Socket [chip]) CPUs: 4-7 |-- 7 (CPU_PM_Active_Power_Domain) CPU: 4 |-- 8 (CPU_PM_Active_Power_Domain) CPU: 5 |-- 9 (CPU_PM_Active_Power_Domain) CPU: 6 `-- 10 (CPU_PM_Active_Power_Domain) CPU: 7

Page 37: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 37

トポロジーの負荷状況を把握する必要がある場合に、この詳細レベルの情報を表示できるツールが pgstatです。以下のコマンドを使用して、pgstatレポートを1分間実行します

root@x4140:~# pgstat -A 60 1 PG RELATIONSHIP HW SW CPUS 0 System - 6.6% 0-7 1 Socket - 5.7% 0-3 2 CPU_PM_Active_Power_Domain - 3.9% 0 3 CPU_PM_Active_Power_Domain - 5.0% 1 4 CPU_PM_Active_Power_Domain - 11.8% 2 5 CPU_PM_Active_Power_Domain - 2.2% 3 6 Socket - 7.5% 4-7 7 CPU_PM_Active_Power_Domain - 3.1% 4 8 CPU_PM_Active_Power_Domain - 4.9% 5 9 CPU_PM_Active_Power_Domain - 16.2% 6 10 CPU_PM_Active_Power_Domain - 5.7% 7

Page 38: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 38

次は、あるOracle Solarisゾーンにドリルダウンして、この負荷の原因となっているアプリケーションまたはプロセスを把握します。まずはdata-node1ゾーンにログインします。

root@x4140:~# zlogin data-node1 [Connected to zone 'data-node1' pts/3] Oracle Corporation SunOS 5.11 11.2 June 2014

注:data-node1ゾーンにログインできたかどうかは、zonenameコマンドを使用して確認できます。 このコマンドは、現在のゾーン名を出力します。

root@data-node1:~# zonename data-node1

ゾーン内部でprstatコマンドを使用して、システムの負荷の原因となっているプロセスを表示できます。

root@data-node1:~# prstat -mLc Please wait... PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID 13959 root 23 77 0.0 0.0 0.0 0.0 0.0 0.1 0 0 .2M 0 prstat/1 13939 hadoop 94 0.1 0.1 0.0 0.0 1.4 0.0 4.7 6 775 173 2 java/2 13964 hadoop 89 3.0 0.1 0.0 0.0 2.7 0.1 5.3 132 663 12K 3 java/2 13964 hadoop 16 0.4 0.0 0.0 0.0 83 0.0 0.9 100 12 409 0 java/16 13964 hadoop 14 0.3 0.0 0.0 0.0 85 0.0 0.0 110 13 411 0 java/15 13939 hadoop 2.0 0.0 0.0 0.0 0.0 98 0.0 0.0 11 16 16 0 java/16 13964 hadoop 1.4 0.1 0.0 0.0 0.0 98 0.1 0.2 8 24 522 0 java/19

Page 39: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 39

この結果からhadoopプロセスがシステムの負荷の原因となっていることが分かります。

注:ローカル・ゾーン内部からprstatコマンドを実行して、ゾーンごとのパフォーマンス統計を確認できることが分かりました。 一方、このコマンドを大域ゾーンから実行すれば、システム・ビュー全体を把握できます。これは仮想化認識型コマンドの一例です。仮想化認識型コマンドは自身が非大域ゾーンの内部で実行されていることを認識するため、その他のユーザー・プロセスを参照することはできません。

Page 40: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 40

仮想化環境でのメモリ使用状況の監視

メモリ・サブシステムを監視します。以下に今回のメモリ使用状況の監視に使用するコマンドの概要を示します。

システムに搭載されている物理メモリ容量を出力します。

root@x4140:~# prtconf -v | grep Mem Memory size: 32768 Megabytes

このシステムには32GBのメモリが搭載されています。

コマンド 説明

vmstat 利用可能な空きメモリをレポートする

prstat アクティブなプロセスの統計をレポートする

zonestat アクティブなゾーンの統計をレポートする

zvmstat ゾーンごとのvmstatスタイルの情報を表示する

Page 41: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 41

システム・メモリの現在の割当て方法に関する詳細情報を取得します

root@x4140:~# echo ::memstat | mdb -k Page Summary Pages Bytes %Tot ----------------- ---------------- ---------------- ---- Kernel 674389 2.5G 8% Guest 0 0 0% ZFS Metadata 98480 384.6M 1% ZFS File Data 6796470 25.9G 81% Anon 517773 1.9G 6% Exec and libs 4243 16.5M 0% Page cache 30761 120.1M 0% Free (cachelist) 27807 108.6M 0% Free (freelist) 238486 931.5M 3% Total 8388409 31.9G

Page 42: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 42

カテゴリの意味は次のとおりです。

Kernel ページング不可能なカーネル割当てに使用される総メモリ量。カーネルが使用しているメモリ量と同一

ZFS File Data ZFS適応型置換キャッシュ(ARC)によって使用される総メモリ量

Anon 匿名メモリ量。ユーザー・プロセスのヒープ、スタック、Copy-On-Writeページ、共有メモリ・マッピングなどが含まれる

Exec and libs ユーザーのバイナリおよび共有ライブラリに使用される総メモリ量

Page cache マッピングされていないページ・キャッシュ量、つまりキャッシュ・リストにないページ・キャッシュの量。 /tmp内のファイルもこのカテゴリに含まれる

Free (cachelist) 空きリスト上のページ・キャッシュ量。空きリストにはマッピングされていないファイル・ページが含まれ、通常はファイル・システム・キャッシュの大部分が当てはまる

Free (freelist) 実際に空いているメモリ量。ファイルやプロセスに関連付けられていないメモリ

Page 43: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 43

システムで現在利用可能な空きメモリ量を把握するために、以下に示すようにvmstatコマンドを使用して、1行目以外の行のfree列(単位はKB)の値を確認できます(vmstatの1行目はブート時からのサマリー情報です)。

root@x4140:~# vmstat 10 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 s3 in sy cs us sy id 0 0 0 29483012 26242904 18 68 0 0 0 0 0 6 0 4 0 1458 899 1155 2 1 97 68 0 0 10642484 12027764 1 365 0 0 0 0 0 21 0 19 0 6182 4310 5679 99 1 0 68 0 0 10627180 12014852 0 301 0 0 0 0 0 15 0 14 0 5870 3537 4887 99 1 0 68 0 0 10597520 12001832 0 310 0 0 0 0 0 21 0 20 0 5728 4983 5708 99 1 0 68 0 0 10551924 11992908 0 227 0 0 0 0 0 19 0 15 0 5470 3929 4979 99 1 0 68 0 0 10458364 11983956 0 212 0 0 0 0 0 18 0 17 0 5640 7243 5224 99 1 0 68 0 0 10345500 11977676 0 163 0 0 0 0 0 23 0 19 0 6189 8616 5259 99 1 0 68 0 0 10316120 11973844 2 247 0 0 0 0 0 19 0 16 0 6287 10509 6218 99 1 0 68 0 0 10329392 11967032 0 143 0 0 0 0 0 20 0 18 0 5464 4703 5051 99 1 0 69 0 0 10346648 11964024 0 22 0 0 0 0 0 16 0 15 0 5728 3538 4845 99 1 0

システムには約12GBの空きメモリがあることが分かります。これは、ファイルやプロセスに関連付けられていないメモリです。

Page 44: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 44

システムの物理メモリが不足しているかどうかを判断するには、前の出力かつ結果vmstat出力のsr列を確認します。この sr は scan rate(スキャン率)の意味です。Oracle Solarisでは、メモリが不足している状況で、最近アクセスされていないメモリ・ページをスキャンして、空きリストに移動する処理を開始します。

注: Oracle Solarisでは、srの値がゼロ以外の場合、物理メモリが不足していることを表しています。

vmstat –p を使用して、ページイン、ページアウト、ページ解放の 各アクティビティを観測することもできます

root@x4140:~# vmstat -p 10 memory page executable anonymous filesystem swap free re mf fr de sr epi epo epf api apo apf fpi fpo fpf 29463288 26227988 19 73 0 0 0 0 0 0 0 0 0 0 0 0 16190784 15897060 1 301 0 0 0 0 0 0 0 0 0 0 0 0 16210892 15889500 2 156 0 0 0 0 0 0 0 0 0 0 0 0 16226844 15888256 1 61 0 0 0 0 0 0 0 0 0 0 0 0 16237924 15888176 0 12 0 0 0 0 0 0 0 0 0 0 0 0 16264648 15888252 0 22 0 0 0 0 0 0 0 0 0 0 0 0 16288448 15888500 0 20 0 0 0 0 0 0 0 0 0 0 0 0 16309384 15905416 66 375 0 0 0 0 0 0 0 0 0 0 0 0

Page 45: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 45

vmstat出力にあるとおり、メモリには次の3つのタイプがあります。

実行可能メモリ (epi、epo、epf)

プログラムおよびライブラリ・テキストのために使用されるメモリ・ページ

匿名 (api、apo、apf)

ファイルに関連付けられていないメモリ・ページ。匿名メモリはプロセスのヒープやスタックなどに使用される。 たとえば、プロセス・ページのスワップインまたはスワップアウトの実行中は、api列とapo列の数値が大きくなる

ファイル・システム (fpi、fpo、fpf)

ファイルI/Oのために使用されるメモリ・ページ

Page 46: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 46

システムや仮想マシン(非大域ゾーン)のプロセス統計を参照するために使用できる3つ目のコマンドは、prstatコマンドです

root@x4140:~# prstat -ZmLc Please wait... PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID 2502 root 18 82 0.0 0.0 0.0 0.0 0.0 0.1 0 140 .2M 0 prstat/1 2479 hadoop 4.2 0.4 0.0 0.0 0.0 95 0.1 0.0 113 8 2K 0 java/2 2479 hadoop 4.4 0.1 0.0 0.0 0.0 95 0.0 0.0 16 1 85 0 java/15 2479 hadoop 3.5 0.1 0.0 0.0 0.0 96 0.0 0.0 18 2 76 0 java/16 2479 hadoop 0.6 0.1 0.0 0.0 0.0 5.6 94 0.0 83 0 342 0 java/19 2479 hadoop 0.2 0.2 0.0 0.0 0.0 0.0 100 0.0 7 0 263 0 java/1 332 hadoop 0.2 0.1 0.0 0.0 0.0 96 0.2 0.3 38 5 127 0 java/2 149 hadoop 0.2 0.0 0.0 0.0 0.0 99 0.0 0.6 1 14 2 0 java/16 282 hadoop 0.2 0.1 0.0 0.0 0.0 96 0.1 0.3 36 6 127 0 java/2 291 hadoop 0.2 0.1 0.0 0.0 0.0 97 0.2 0.2 36 6 127 0 java/2 149 hadoop 0.2 0.0 0.0 0.0 0.0 0.0 99 0.4 55 9 232 0 java/23 2476 root 0.1 0.1 0.0 0.0 0.0 0.0 100 0.0 14 0 150 0 zlogin/1 149 hadoop 0.2 0.0 0.0 0.0 0.0 99 0.0 0.6 1 13 2 0 java/15 332 hadoop 0.2 0.0 0.0 0.0 0.0 96 0.0 0.2 2 5 3 0 java/15 291 hadoop 0.2 0.0 0.0 0.0 0.0 97 0.0 0.2 2 2 4 0 java/15 ZONEID NLWP SWAP RSS MEMORY TIME CPU ZONE 0 628 342M 285M 0.9% 0:52:41 0.1% global 10 250 506M 364M 1.1% 0:00:25 1.0% name-node 6 256 450M 335M 1.0% 0:00:25 0.1% data-node1 8 262 349M 287M 0.9% 0:00:26 0.1% data-node3 7 255 438M 313M 1.0% 0:00:24 0.1% data-node2 Total: 250 processes, 1810 lwps, load averages: 0.30, 16.82, 31.16

Page 47: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 47

Oracle Solarisゾーンごとに次の情報が表示されます。

ゾーンごとのメモリ統計の詳細を確認するには、zonestatコマンドを使用できます。 たとえば、zonestat -r コマンドを使用してメモリ使用状況を分析できます

SWAP列 各ゾーンの仮想メモリの総サイズ

RSS列 ゾーンの物理メモリ使用サイズの合計(メイン・メモリの使用状況)

MEMORY列 システム全体のリソースに対する消費されたメイン・メモリの割合(%)

CPU列 システム全体のリソースに対する消費されたCPUの割合(%)

ZONE列 各ゾーンの名前

Page 48: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 48

root@x4140:~# zonestat -r memory 10 Collecting data for first interval... Interval: 1, Duration: 0:00:10 PHYSICAL-MEMORY SYSTEM MEMORY mem_default 31.9G ZONE USED %USED CAP %CAP [total] 14.2G 44.6% - - [system] 3075M 9.38% - - data-node2 4537M 13.8% - - data-node1 4187M 12.7% - - data-node3 1996M 6.09% - - name-node 383M 1.17% - - global 280M 0.85% - - sec-name-node 160M 0.48% - - VIRTUAL-MEMORY SYSTEM MEMORY vm_default 35.9G ZONE USED %USED CAP %CAP [total] 19.3G 53.7% - - [system] 3007M 8.15% - - data-node2 5854M 15.8% - - data-node1 5785M 15.6% - - data-node3 4101M 11.1% - - name-node 517M 1.40% - - global 344M 0.93% - - sec-name-node 206M 0.55% - -

LOCKED-MEMORY SYSTEM MEMORY mem_default 31.9G ZONE USED %USED CAP %CAP [total] 2916M 8.90% - - [system] 2874M 8.77% - - data-node3 7924K 0.02% - - name-node 7920K 0.02% - - data-node1 6872K 0.02% - - data-node2 6872K 0.02% - - sec-name-node 6872K 0.02% - - global 6608K 0.01% - -

物理メモリ(PHYSICAL-MEMORY)、仮想メモリ(VIRTUAL-MEMORY)、ロックされた(LOCKED-MEMORY)のそれぞれについて、メモリメモリ使用量が分かります。たとえば、特権プロセスは仮想メモリをロックできます。このロックされたメモリはページアウトされません。

Page 49: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 49

仮想化環境でメモリ使用状況を監視するために使用できる別のコマンドとして、zvmstatコマンドがあります。このコマンドは、各ゾーンについてvmstatの結果を出力します

root@x4140:~# /usr/dtrace/DTT/Bin/zvmstat 10 ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf global 88 806 0 0 0 0 0 0 0 0 0 0 0 data-node1 0 3526 0 0 0 0 0 0 0 0 0 0 0 data-node2 0 3809 0 0 0 0 0 0 0 0 0 0 0 data-node3 17 3962 0 0 0 0 0 0 0 0 0 0 0 sec-name-node 1 17 0 0 0 0 0 0 0 0 0 0 0 name-node 0 0 0 0 0 0 0 0 0 0 0 0 0 ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf global 25 135 0 0 0 0 0 0 0 0 0 0 0 data-node1 1 2943 0 0 0 0 0 0 0 0 0 0 0 data-node2 0 4681 0 0 0 0 0 0 0 0 0 0 0 data-node3 0 3851 0 0 0 0 0 0 0 0 0 0 0 sec-name-node 11 19 0 0 0 0 0 0 0 0 0 0 0 name-node 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 50: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 50

項目の意味は次のとおりです

Zone列 ゾーン名

re列 ページ回収の回数

mf列 マイナー・フォルトの回数

fr列 解放されたページの数

sr列 スキャン率

epi列 ページインされた実行可能ページの数

vepo列 ページアウトされた実行可能ページの数

epf列 解放された実行可能ページの数

api列 ページインされた匿名ページの数

apo列 ページアウトされた匿名ページの数

apf列 解放された匿名ページの数

fpi列 ページインされたファイル・システム・ページの数

fpo列 ページアウトされたファイル・システム・ページの数

fpf列 解放されたファイル・システム・ページの数

Page 51: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 51

このメモリ測定の対象を絞り込んで、特定のゾーンをチェックできます。以下のコマンドで、name-nodeゾーンのメモリ使用状況を表示できます。

root@x4140:~# prstat -mLz name-node PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID ---------------------------------------------------------------------------- 26152 hadoop 0.1 0.0 0.0 0.0 0.0 0.0 100 0.0 50 0 200 0 java/23 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 100 0 100 0 java/19 7096 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 100 0 100 0 java/19 6894 root 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 7 0 52 7 ntpd/1 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/32 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/33 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/35 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/34 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/30 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/38 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/36 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/31 7096 hadoop 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 6 0 24 0 java/26 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/39 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 5 0 10 0 java/37 26152 hadoop 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 5 0 5 0 java/25 26152 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 6 0 6 0 java/11 7096 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 1 0 2 0 java/41 7096 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 1 0 2 0 java/40 7096 hadoop 0.0 0.0 0.0 0.0 0.0 100 0.0 0.0 1 0 2 0 java/36 7096 hadoop 0.0 0.0 0.0 0.0 0.0 0.0 100 0.0 5 0 5 0 java/28 Total: 31 processes, 231 lwps, load averages: 0.10, 0.09, 0.08

Page 52: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 52

メモリ統計を確認するためにdata-node1ゾーンにドリルダウンしましょう。どのプロセスが物理メモリを専有しているかを確認するには、特定のOracle Solarisゾーンをどのように調査します。data-node1ゾーンへログインします。

root@x4140:~# zlogin data-node1 [Connected to zone 'data-node1' pts/3] Oracle Corporation SunOS 5.11 11.2 June 2014 root@data-node1:~#

以下コマンドを使用して、そのゾーンの物理メモリ使用サイズ(RSS)に従ってプロセスをソートします。RSSは、RAMに保持されているプロセス・メモリ部分です。メモリをもっとも多く消費しているプロセスが一番上に表示されます。

hadoopプロセスがもっとも多くのRSSメモリを使用しています。

root@data-node1:~# prstat -s rss PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP -------------------------------------------------------------------------- 26309 hadoop 237M 137M sleep 59 0 0:01:53 0.0% java/38 7238 hadoop 122M 66M sleep 59 0 0:08:27 0.0% java/35 29560 root 39M 33M sleep 59 0 0:00:08 0.0% svc.startd/12 29563 root 18M 14M sleep 59 0 0:00:21 0.0% svc.configd/23 1329 root 21M 7868K sleep 59 0 0:00:00 0.0% fmd/11 29975 daemon 12M 5780K sleep 59 0 0:00:00 0.0% kcfd/3 1278 root 19M 4140K sleep 59 0 0:00:10 0.0% nscd/27 6284 root 5928K 3624K cpu4 59 0 0:00:00 0.0% prstat/1 19 root 9636K 3300K sleep 59 0 0:00:00 0.0% rad/4

Page 53: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 53

仮想化環境でのネットワーク使用状況の監視 ネットワークのパフォーマンスを監視します。 以下に、この記事のネットワークのパフォーマンスの監視に使用するコマンドの概要を示します。

コマンド 説明

dladm データリンクを管理する

dlstat データリンクの統計をレポートする

zonestat アクティブなゾーンの統計をレポートする

flowstat フローの統計をレポートする

flowadm 帯域幅リソース制御を管理する

Page 54: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 54

Hadoopクラスタでは、ほとんどのネットワーク・トラフィックは DataNode 間の HDFS データ・レプリケーション向けのトラフィックです。 以下の問題を検討します。 ■ネットワーク・トラフィック量がもっとも多いゾーンともっとも少ないゾーンはどれか。 ■現在処理しているネットワーク接続数の観点からもっともビジー状態にあるゾーンはどれか。 ■Oracle Solarisゾーン、物理ネットワーク・カード、 仮想ネットワーク・インタフェース・カード(VNIC)などの特定のネットワーク・リソースを 監視するにはどうすればよいか。 dladmコマンドを使用して物理ネットワーク・カード数を表示して、現在のネットワーク設定を再確認します。

root@x4140:~# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net2 Ethernet unknown 0 unknown nge2 net1 Ethernet unknown 0 unknown nge1 net0 Ethernet up 1000 full nge0 net3 Ethernet unknown 10 unknown nge3

Page 55: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 55

次に、dladmコマンドを使用してVNIC情報を出力します

root@x4140:~# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VIDS vnic0 net0 1000 2:8:20:11:46:75 random 0 name_node1 net0 1000 2:8:20:a6:ef:69 random 0 name-node/name_node1 net0 1000 2:8:20:a6:ef:69 random 0 secondary_name1 net0 1000 2:8:20:a6:14:47 random 0 sec-name-node/secondary_name1 net0 1000 2:8:20:a6:14:47 random 0 data_node1 net0 1000 2:8:20:53:bd:fd random 0 data-node1/data_node1 net0 1000 2:8:20:53:bd:fd random 0 data_node2 net0 1000 2:8:20:19:e6:aa random 0 data-node2/data_node2 net0 1000 2:8:20:19:e6:aa random 0 data_node3 net0 1000 2:8:20:6b:1b:32 random 0 data-node3/data_node3 net0 1000 2:8:20:6b:1b:32 random 0 data-node1/net0 net0 1000 2:8:20:e4:45:54 random 0 data-node2/net0 net0 1000 2:8:20:53:fe:e8 random 0 data-node3/net0 net0 1000 2:8:20:7e:66:52 random 0 sec-name-node/net0 net0 1000 2:8:20:3d:32:d3 random 0 name-node/net0 net0 1000 2:8:20:b9:b2:40 random 0

dladmは、関連付けられた物理インタフェース(OVER)、速度(SPEED)、MACアドレス(MACADDRESS)、VLAN ID(VID)を出力します。

Page 56: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 56

前頁の結果より、各ゾーンに1つずつ、5つのVNICがあることが分かります

Page 57: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 57

zonestatコマンドを-rオプション、-xオプションとともに使用して詳細なネットワーク情報を表示し、測定対象を特定のOracle Solarisゾーンに絞り込むことができます。以下のように、3つのDataNodeゾーン(data-node1、data-node2、data-node3)のネットワーク・トラフィックを監視できます。

root@x4140:~# zonestat -z data-node1 -z data-node2 -z data-node3 -r network -x 10 Collecting data for first interval... Interval: 1, Duration: 0:00:10 NETWORK-DEVICE SPEED STATE TYPE net0 1000mbps up phys ZONE LINK TOBYTE MAXBW %MAXBW PRBYTE %PRBYTE POBYTE %POBYTE [total] net0 711K - - 300 0.00% 1066 0.00% global net0 420 - - 300 0.00% 0 0.00% name-node name_node1 351K - - 0 0.00% 0 0.00% data-node1 data_node1 132K - - 0 0.00% 46 0.00% data-node2 data_node2 130K - - 0 0.00% 46 0.00% data-node3 data_node3 940K - - 0 0.00% 0 0.00% global vnic0 1094 - - 0 0.00% 974 0.00% sec-name-node secondary_name1 106 - - 0 0.00% 0 0.00% data-node1 data-node1/net0 0 - - 0 0.00% 0 0.00% data-node2 data-node2/net0 0 - - 0 0.00% 0 0.00% data-node3 data-node3/net0 0 - - 0 0.00% 0 0.00% name-node name-node/net0 0 - - 0 0.00% 0 0.00% sec-name-node sec-name-node/net0 0 - - 0 0.00% 0 0.00%

Page 58: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 58

前頁のコマンド出力には次の情報が含まれています

項目 説明

LINK データリンク名

TOBYTE データリンクまたは仮想リンクにより送受信されたバイト数

MAXBW データリンクに構成されている最大帯域幅

%MAXBW 構成済みの最大帯域幅に対する送受信済みバイト数の合計の割合(%)

PRBYTE 物理帯域幅を消費した受信済みバイト数

%PRBYE 利用可能な物理帯域幅に対する、 PRBYTEの受信に使用された帯域幅の割合(%)

POBYTE 物理帯域幅を消費した送信済みバイト数

%POBYE 利用可能な物理帯域幅に対する、 POBYTEの送信に使用された帯域幅の割合(%)

Page 59: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 59

dlstatコマンドを使用して、3つのDataNodeに関連付けられた3つのVNICを監視できます

root@x4140:~# dlstat -z data-node1,data-node2,data-node3 -i 10 LINK IPKTS RBYTES OPKTS OBYTES data-node1/data_node1 14.71M 12.40G 16.79M 13.23G data-node2/data_node2 15.11M 12.82G 17.00M 13.40G data-node3/data_node3 14.66M 12.49G 16.40M 12.63G data-node1/net0 10.15K 593.70K 0 0 data-node2/net0 10.13K 592.83K 0 0 data-node3/net0 10.10K 591.31K 0 0 data-node1/data_node1 7 894 14 11.95K data-node2/data_node2 8 938 15 13.34K data-node3/data_node3 7 890 14 11.65K data-node1/net0 0 16 0 0 data-node2/net0 0 16 0 0 data-node3/net0 0 16 0 0

項目 説明

IPKTS インバウンド・パケット数

RBYTES 受信済みバイト数

OPKTS アウトバウンド・パケット数

OBYTES 送信済みバイト数

Page 60: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 60

特定のネットワーク・リソースにドリルダウンして、たとえば、物理ネットワーク・インタフェース(net0)を監視できます。

root@x4140:~# dlstat net0 -i 10 LINK IPKTS RBYTES OPKTS OBYTES net0 243.87K 17.37M 39.86K 2.90M net0 2 168 0 0 net0 3 219 0 0

data-node1ゾーンに関連付けられたVNICのみを監視することもできます。

root@x4140:~# dlstat data_node1 -i 10 LINK IPKTS RBYTES OPKTS OBYTES data_node1 14.72M 12.40G 16.81M 13.24G data_node1 7 909 13 11.61K data_node1 7 880 13 11.60K

注: dlstatは、非大域ゾーンから実行した場合には、そのゾーン内にあるリンクに関する統計のみを表示します。非大域ゾーンから他のゾーンのリンクを参照することはできません。

Page 61: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 61

フローとは、Oracle Solaris 11の新しいネットワーク仮想化アーキテクチャに組み込まれた、洗練されたサービス品質(QoS)メカニズムです。フローを使用すれば、特定のネットワー ク・インタフェース上の特定のネットワーク・ポートについて、ネットワーク帯域幅の測定やネットワーク帯域幅に制限を設けることができます。さらに、フ ローの作成、変更、削除は、大域ゾーンでも非大域ゾーンでも実行できます。

name-node VNIC上のTCP 5001ネットワーク・ポートに関連付けられるフローを設定します name-node にログインします

root@x4140:~# zlogin name-node [Connected to zone 'name-node' pts/5] Oracle Corporation SunOS 5.11 11.2 June 2014

name-node VNIC上にフローを作成します。

root@name-node:~# flowadm add-flow -l name_node1 -a transport=TCP,local_port=5001 sample-flow

注:フローを有効化または無効化するために、ゾーンを再起動する必要はありません。これは、本番システムでネットワークのパフォーマンス問題をデバッグする必要がある場合に非常に便利です。

Page 62: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 62

フローが作成されていることを確認します,関連付けられているVNIC(name_node1)とTCPポート番号(5001)に対してsample-flowフローが作成されています

root@name-node:~# flowadm show-flow FLOW LINK PROTO LADDR LPORT RADDR RPORT DSFLD sample-flow name_node1 tcp -- 5001 -- -- --

name_nodeゾーンでは、flowstat(1M)コマンドを使用できます。このコマンド は、ユーザー定義のフローに関する実行時統計をレポートします。受信側の統計のみ、または送信側の統計のみをレポートすることもできます。さらに、指定し たリンク上のすべてのフローに関する統計や、特定のフローに関する統計を表示することもできます

root@name-node:~# flowstat -i 1 FLOW IPKTS RBYTES IDROPS OPKTS OBYTES ODROPS sample-flow 439 57.02K 0 327 50.81K 0 sample-flow 3 842 0 2 428 0 sample-flow 3 521 0 1 214 0 sample-flow 0 0 0 0 0 0 sample-flow 3 842 0 2 428 0 sample-flow 3 521 0 1 214 0 sample-flow 0 0 0 0 0 0

Page 63: 第165回 夜な夜な!なにわオラクル塾 Oracle Sun 第22弾 と ...2016/04/06  · Hadoopクラスタのすべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 63

sample-flow に対して帯域制限をかけます

root@name-node:~# flowadm set-flowprop -p maxbw=50M sample-flow

フローが削除されたことを確認します

root@name-node:~# flowadm show-flow

注:フローを削除するためにゾーンを再起動する必要はありません。これは、本番環境で非常に便利です

ネットワーク測定の終了後、フローを削除できます

root@name-node:~# flowadm remove-flow sample-flow

root@data-node3:~# iperf -c name-node ------------------------------------------------------------ Client connecting to name-node, TCP port 5001 TCP window size: 48.0 KByte (default) ------------------------------------------------------------ [ 4] local 10.188.168.32 port 32974 connected with 10.188.168.28 port 5001 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.1 sec 61.7 MBytes 51.4 Mbits/sec root@data-node3:~#