Интеграция

60 %
40 %
Information about Интеграция

Published on August 3, 2007

Author: magspb

Source: slideshare.net

Description

Интеграция региональной программы информатизации и Intel"Обучение для будущего"

処理性能の考慮した システム設計の理論と実践 株式会社ラグザイア 取締役副社長 /CTO 相馬 純平

こんな経験無いですか? 100 件のテストデータなら問題なく動作したのに 1 万件だと応答が全く返ってこなかった。急遽慌てて徹夜の対応に追われる。 「もっと早くできる」と言われ、処理速度を 2 倍に改善されてしまった。 OR マッパーに頼りすぎて処理性能が出ずにコードを 1 から書き換えられた。 アプリケーションの起動速度を 10 倍に短縮された。 ハードウェアの性能を上げても処理性能がほとんど変わらなかった。 テストでは十分なレスポンスタイムを出していたにもかかわらず、いざインターネットに公開してアクセスされたら全然動作しなかった。

100 件のテストデータなら問題なく動作したのに 1 万件だと応答が全く返ってこなかった。急遽慌てて徹夜の対応に追われる。

「もっと早くできる」と言われ、処理速度を 2 倍に改善されてしまった。

OR マッパーに頼りすぎて処理性能が出ずにコードを 1 から書き換えられた。

アプリケーションの起動速度を 10 倍に短縮された。

ハードウェアの性能を上げても処理性能がほとんど変わらなかった。

テストでは十分なレスポンスタイムを出していたにもかかわらず、いざインターネットに公開してアクセスされたら全然動作しなかった。

事例 1  計算量とアルゴリズム 要件 とある会員情報が 2 つのテキストファイルに記録されている。これら 2 つのテキストファイルの差分として記録されている会員情報を抽出しなければならない。 実装 ファイル A から 1 件読み込み、ファイル B に問い合わせる。これを全件行いファイルにのみ存在するレコードを抽出。同様にファイル B から 1 件読み込みファイル B にのみ存在する情報を抽出。 結果 100 件でのテストでは 0.4 秒で終了したテストも 10000 件では 1 時間もかかってしまった

要件

とある会員情報が 2 つのテキストファイルに記録されている。これら 2 つのテキストファイルの差分として記録されている会員情報を抽出しなければならない。

実装

ファイル A から 1 件読み込み、ファイル B に問い合わせる。これを全件行いファイルにのみ存在するレコードを抽出。同様にファイル B から 1 件読み込みファイル B にのみ存在する情報を抽出。

結果

100 件でのテストでは 0.4 秒で終了したテストも 10000 件では 1 時間もかかってしまった

原因 n^2 に比例するアルゴリズムで実装されていることから、データ件数が 100 倍だと単純に 100 倍ではなく、 10000 倍かかってしまう 。    0.04ms * 100^2 = 400ms = 0.4 秒    0.04ms * 10000^2 = 4000000ms = 4000sec = 66min 相馬 純平 毛利 良相 佐藤 学 本田 栄一郎 佐伯 亮子 風間 忠志 佐藤 学 谷本 雅彦 毛利 良相 中谷 綾子 0.04ms

原因

n^2 に比例するアルゴリズムで実装されていることから、データ件数が 100 倍だと単純に 100 倍ではなく、 10000 倍かかってしまう 。

   0.04ms * 100^2 = 400ms = 0.4 秒

   0.04ms * 10000^2 = 4000000ms = 4000sec = 66min

メカニズム 計算量と表す方法として O 記法 (O-notation) というものが存在する。 O(x) として表記 集合分割問題 ( 天気予想 ) サラリーマンの巡回路問題 たんぱく質構造解析 指数 O(2^n) 行列乗算 3 次 O(n^3) 配列同士の比較 2 次 O(n^2) クイックソート nlogn O(nlogn) 文字列比較 1 次 O(n) 二分検索 対数 O(logn) 配列インデックス ハッシュテーブルからの検索 定数 O(1) 例 名称 記法

メカニズム

計算量と表す方法として O 記法 (O-notation) というものが存在する。

O(x) として表記

 

解決策 O(n^2) のアルゴリズムを O(nlogn) もしくは O(n) に短縮する 評価対象のデータに対して索引を作成 O(n) の計算量に短縮 66 分かかっていた処理が数秒以内に短縮される  索引を作成する時間が乗せられるため 101231 245230 634719 787811 999989 ハッシュの索引を作成 相馬 純平 毛利 良相 佐藤 学 本田 栄一郎 佐伯 亮子 × 風間 忠志 田口 登 谷本 雅彦 毛利 良相 中谷 綾子 × ×

解決策

O(n^2) のアルゴリズムを O(nlogn) もしくは O(n) に短縮する

評価対象のデータに対して索引を作成

O(n) の計算量に短縮

66 分かかっていた処理が数秒以内に短縮される

 索引を作成する時間が乗せられるため

事例 2  パイプライン処理 要件 毎月 15 日に顧客毎の嗜好に合わせた月次のメールマガジンを送信する。 実装 顧客マスタ内のメール希望フラグに該当する顧客情報をフェッチする。 顧客の趣味嗜好をフェッチする。 メール本文を作成 SMTP によりメール送信 2,3,4 を繰り返す 結果 会員数が少ない (100 件程度 ) うちは問題なかったが 10000 件になると 9 時間以上かかるようになってしまった。

要件

毎月 15 日に顧客毎の嗜好に合わせた月次のメールマガジンを送信する。

実装

顧客マスタ内のメール希望フラグに該当する顧客情報をフェッチする。

顧客の趣味嗜好をフェッチする。

メール本文を作成

SMTP によりメール送信

2,3,4 を繰り返す

結果

会員数が少ない (100 件程度 ) うちは問題なかったが 10000 件になると 9 時間以上かかるようになってしまった。

処理 A スレッド 処理 B スレッド キュー 処理 B スレッド 25ms 50ms 50ms  処理性能の異なる 2 つの処理を非同期に結合する。   CPU リソースを無駄なく有効活用するために用いる。  スレッドではなく、プロセスや、ネットワークを越えた   位置にある処理系でも良い 処理対象のデータ 処理 A 生成された データをキューにプッシュ キューにデータがあればポップして処理を実行

 処理性能の異なる 2 つの処理を非同期に結合する。

  CPU リソースを無駄なく有効活用するために用いる。

 スレッドではなく、プロセスや、ネットワークを越えた   位置にある処理系でも良い

(800ms + 120ms + 2500) * 10000 = 9.5 時間 2500ms * 10000 = 7 時間 解決策 メール送信を非同期に行う メール本文の作成と送信をパイプライン化する。 データベースへの 問い合わせ メール本文の作成 メールの送信 800ms 120ms 2500ms データベースへの 問い合わせ メール本文の作成 メールの送信 800ms 120ms キューへプッシュ キューからポップ 2500ms

(800ms + 120ms + 2500) * 10000 = 9.5 時間

2500ms * 10000 = 7 時間

解決策

メール送信を非同期に行う

メール本文の作成と送信をパイプライン化する。

事例 3  無駄なハードウェア強化 要件 先ほどの例で、より処理性能を向上して処理時間を短縮してほしい。 実装 CPU をより処理性能が 2 倍、メモリを 1G から 2G のパソコンに変更。 結果 処理性能はほとんど改善されず

要件

先ほどの例で、より処理性能を向上して処理時間を短縮してほしい。

実装

CPU をより処理性能が 2 倍、メモリを 1G から 2G のパソコンに変更。

結果

処理性能はほとんど改善されず

解決策 全体の処理性能を決定付けているのはメールの転送速度である。 ネットワーク帯域の拡大 帯域拡大に比例して処理性能が早くなる。 メールの転送量の減少 同じ本文のメールをキャッシュし、 BCC にて送信する。 結果 チューニングの順序 計算量的に無駄な処理が無いか? CPU 利用率が常に高い場合は要検討 パイプライン化などにより、ハードウェア性能が十分に引き出されているか? 処理性能の異なるペリフェラルとやり取りがある場合は要検討 ボトルネックとなっているハードウェアの性能を向上。 ペリフェラルの性能向上に伴い、ボトルネックが別に移っていないか確認すること。

解決策

全体の処理性能を決定付けているのはメールの転送速度である。

ネットワーク帯域の拡大

帯域拡大に比例して処理性能が早くなる。

メールの転送量の減少

同じ本文のメールをキャッシュし、 BCC にて送信する。

結果

チューニングの順序

計算量的に無駄な処理が無いか?

CPU 利用率が常に高い場合は要検討

パイプライン化などにより、ハードウェア性能が十分に引き出されているか?

処理性能の異なるペリフェラルとやり取りがある場合は要検討

ボトルネックとなっているハードウェアの性能を向上。

ペリフェラルの性能向上に伴い、ボトルネックが別に移っていないか確認すること。

事例 3  本末転倒なデザイン 要件 LDAP のようなディレクトリサービスに格納されている巨大な組織構成を管理する GUI を実装する 実装 巨大な組織構成を管理するモデルを EJB で作成。組織を指定するとそこに属する構成員を即座に検索できるようなモデルとして設計する 結果 表示に関係無い情報もフェッチされるため、無駄なオーバーヘッドがかかりすぎて性能が出ない 組織以外のビューで検索すると処理性能が出ない。

要件

LDAP のようなディレクトリサービスに格納されている巨大な組織構成を管理する GUI を実装する

実装

巨大な組織構成を管理するモデルを EJB で作成。組織を指定するとそこに属する構成員を即座に検索できるようなモデルとして設計する

結果

表示に関係無い情報もフェッチされるため、無駄なオーバーヘッドがかかりすぎて性能が出ない

組織以外のビューで検索すると処理性能が出ない。

オンライン処理とバッチ処理 オンライン処理の場合は単位時間辺りの処理件数など、単位時間辺りの処理能力が主眼となる バッチ処理は 1 つの処理が最初から最後までの処理時間が主眼となる。 両者では、 OS のスケジューリングアルゴリズムの最適化方法が異なる。

オンライン処理の場合は単位時間辺りの処理件数など、単位時間辺りの処理能力が主眼となる

バッチ処理は 1 つの処理が最初から最後までの処理時間が主眼となる。

両者では、 OS のスケジューリングアルゴリズムの最適化方法が異なる。

Add a comment

Related presentations

Related pages

Интеграция — Википедия

Список значений слова или словосочетания со ссылками на соответствующие статьи.
Read more

Научные конференции для детей и молодежи

Добро пожаловать на официальный сайт Национальной системы Интеграция. Обращение ...
Read more

Der Deutsche Olympische Sportbund : Sport und Integration

Die Debatte um den sogenannten Burkini, einem zweiteiligen, körperbedeckenden Schwimmanzug für muslimische Frauen, hat auch den Sport erreicht.
Read more

Добро пожаловать на сайт КГОО "ИНТЕГРАЦИЯ"

Добро пожаловать на сайт КГОО "ИНТЕГРАЦИЯ" Кемеровская городская общественная ...
Read more

Vertikale Integration – Wikipedia

Konkret bedeutet vertikale Integration, dass ein Unternehmen vor- oder nachgelagerte Fertigungsstufen (Produktions- oder Handelsstufen) in einem ...
Read more

Avira OEM Partners - Technology Programs & SDK Integration

Avira Antivirus OEM Solutions Strengthen your products and services by integrating award-winning technology, ranging from web protection to mobile antivirus.
Read more

интеграция — Викисловарь

Последнее изменение этой страницы: 14:23, 24 июля 2016. Текст доступен по лицензии Creative ...
Read more

Ответы@Mail.Ru: что такое интеграция?

Интеграция – под этим термином в экономической науке понимается процесс ...
Read more

European Web Site on Integration - European Commission

EWSI; de Europäische Webseite für Integration; en European Web Site on Integration; fr Portail européen sur l'intégration ...
Read more

Integrations & Bots | HipChat

Integrations bring 100s of tools & bots into HipChat. Connect apps like Google, JIRA, Asana & Dropbox to bring external information & alerts into chat.
Read more