サマリー
EC2インスタンス(t2.micro)から psql で Redshift に結果セットが100GB以上と大きい select 文を発行すると、CloudWatch メトリクスでネットワーク受信量 (バイト数)が約500MB/分になる。 m5.large では約3.2GB/分のスループットが出た。
- t2.micro(帯域:最大 5 Gbps=625MB/s)
- 約500MB/分
- m5.large(帯域:最大 10 Gbps=1.25GB/s)
- 約3.2GB/分
検証手順
$ export LC_ALL=C $ psql "host=redshift-cluster-poc.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439"
- スキーマを作成する
CREATE SCHEMA IF NOT EXISTS poc_sample;
- 検証用にテーブルを作成する
CREATE TABLE poc_sample.lineorder ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGER NOT NULL, lo_custkey INTEGER NOT NULL, lo_partkey INTEGER NOT NULL, lo_suppkey INTEGER NOT NULL, lo_orderdate INTEGER NOT NULL, lo_orderpriority VARCHAR(15) NOT NULL, lo_shippriority VARCHAR(1) NOT NULL, lo_quantity INTEGER NOT NULL, lo_extendedprice INTEGER NOT NULL, lo_ordertotalprice INTEGER NOT NULL, lo_discount INTEGER NOT NULL, lo_revenue INTEGER NOT NULL, lo_supplycost INTEGER NOT NULL, lo_tax INTEGER NOT NULL, lo_commitdate INTEGER NOT NULL, lo_shipmode VARCHAR(10) NOT NULL ); CREATE TABLE poc_sample.lineorder_10x ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGER NOT NULL, lo_custkey INTEGER NOT NULL, lo_partkey INTEGER NOT NULL, lo_suppkey INTEGER NOT NULL, lo_orderdate INTEGER NOT NULL, lo_orderpriority VARCHAR(15) NOT NULL, lo_shippriority VARCHAR(1) NOT NULL, lo_quantity INTEGER NOT NULL, lo_extendedprice INTEGER NOT NULL, lo_ordertotalprice INTEGER NOT NULL, lo_discount INTEGER NOT NULL, lo_revenue INTEGER NOT NULL, lo_supplycost INTEGER NOT NULL, lo_tax INTEGER NOT NULL, lo_commitdate INTEGER NOT NULL, lo_shipmode VARCHAR(10) NOT NULL );
- データをロードする
- 事前に s3://awssampledb-yoheia/ssbgz/(ap-northeast-1) に s3://awssampledbuswest2/ssbgz/(us-west-2) のデータをコピーしている。
copy poc_sample.lineorder from 's3://awssampledb-yoheia/ssbgz/lineorder' iam_role 'arn:aws:iam::123456789012:role/redshift-spectrum-s3-fullaccess' gzip compupdate off region 'ap-northeast-1';
- データを10倍に増幅する。
insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder); insert into poc_sample.lineorder_10x (select * from poc_sample.lineorder);
- S3 から Redshift にデータロードする。
select database, schema, "table", size, tbl_rows from svv_table_info where schema = 'poc_sample'; database | schema | table | size | tbl_rows ----------+------------+---------------+--------+------------ dev | poc_sample | lineorder | 25112★25GB | 600037902 dev | poc_sample | lineorder_10x | 250597★250GB | 6000379020 (2 rows)
$ cat lineorder.sql --\set FETCH_COUNT 10000 select * from poc_sample.lineorder_10x;
- psql on EC2 から大きな結果セットを取得する。
psql "host=redshift-cluster-poc.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f lineorder.sql
- 性能系ツールのインストール
sudo yum -y install git gcc-c++ libpcap-devel.x86_64 libpcap.x86_64 ncurses* sudo yum -y install htop dstat perf git clone https://github.com/raboof/nethogs cd nethogs make sudo make install
参考
- search_path - Amazon Redshift
- SVV_TABLE_INFO - Amazon Redshift
- 汎用インスタンス - Amazon Elastic Compute Cloud
NetworkIn
すべてのネットワークインターフェイスを通じ、このインスタンスによって受信されたバイトの数。このメトリクスは、1 つのインスタンスへの受信ネットワークトラフィックの量を表しています。報告された数は、期間中に受信されたバイト数です。基本 (5 分) のモニタリングで統計情報に Sum 使用している場合であれば、この数を 300 で除算してバイト/秒の値を求めることができます。詳細 (1 分) のモニタリングで統計情報に Sum 使用している場合合は、この数を 60 で除算します。
単位: バイト
インスタンスの利用可能な CloudWatch メトリクスのリスト表示 - Amazon Elastic Compute Cloud