タグ

ブックマーク / xtech.nikkei.com (112)

  • 第9回 Heartbeat のパラメータを理解する

    Heartbeat には,クラスタリング動作に関するパラメータがいくつかあります。 今回は,設定パラメータを通じて,クラスタリング動作に関して,さらに理解を深めていきましょう。 クラスタリング動作に関するパラメータは,大きく2つに分けられます。ハートビート通信に関するパラメータと,リソース監視・制御のパラメータです。 ◆ハートビート通信に関するパラメータ ハートビート通信に関するパラメータは,「ha.cf」で設定します。次の5種類があります。 (1) udpport ハートビート通信で利用するポート番号を設定できます。構築したクラスタ環境では次のようになっており,コミュニティ推奨の udp/694 としています。 もし,udp/694 が他のアプリケーションで利用されているような環境では,パラメータを変更することで対応できます。 (2) keepalive クラスタ・ノードから,ハートビ

    第9回 Heartbeat のパラメータを理解する
  • 第3回 TCP/IP高速化:パケット損失から素早く回復 - スループット向上の切り札「TCP/IP高速化技術」:ITpro

    前回は,もともとのTCP/IPが二つの理由で力不足になっていると説明し,その一つめの理由「フロー制御」を説明した。今回は二つめの理由「輻輳制御」に注目する。 もともとのTCPは輻輳によりパケット損失が発生すると,送信データ量(セグメント数)を半減させる(図1左)。セグメント数を一気に半減させた後,再びスロー・スタートのようにセグメント数を徐々に増やしていく。ただしパケット損失後は,セグメント数を倍増させるのではなく,一つずつ追加する。指数関数的にセグメント数が増えるスロー・スタートと比べ,スループットの上昇は緩やかになる。 図1●パケット損失後の動き もともとのTCPは,パケット損失が起きると送信データ量が一気に半減し,そこから少しずつ回復する。広帯域・遅延大のネットワークほど,スループットが頭打ちとなる。HSTCP(HiSpeed TCP)は,送信データ量が多い場合に,送信データ量に応じ

    第3回 TCP/IP高速化:パケット損失から素早く回復 - スループット向上の切り札「TCP/IP高速化技術」:ITpro
    hiroyukim
    hiroyukim 2015/12/24
  • 重要なのは物理NICのチーミング

    ネットワンシステムズ 宮下 徹、奈良 昌紀 サーバー仮想化ソフトは、ネットワークの観点から見ると、仮想マシン、仮想NIC、仮想スイッチの三つのコンポーネントに分けられる。ネットワーク設計に当たっては、これらと、物理NIC、物理スイッチを合わせてトポロジーや冗長構成を考える必要がある。 仮想化環境というテーマからすると意外かもしれないが、このうち仮想ネットワークの設計で最も重要なのは物理NICである。今回は、冗長化を中心とした、仮想化環境のネットワーク設計について解説する。 設計の肝はNICの「チーミング」 ネットワーク設計で重要なのは、可用性と十分な帯域、柔軟性を確保すること。このうち可用性と帯域の確保に役立つのが、複数の物理NICのチーミング*1である。チーミングは複数のNICを一つのNICとして扱えるようにする技術。複数の物理NICへのネットワーク・トラフィックの分散や、物理NICのフ

    重要なのは物理NICのチーミング
    hiroyukim
    hiroyukim 2015/09/23
  • 第9回:フレームを連結して待ち時間を短縮

    802.11nでは物理層の高速化によって最大600Mビット/秒で通信できるようになる。ただし,これは実際のスループットを示していない。あくまでデータを送っている瞬間の最大値が600Mビット/秒ということであり,最終的なスループットはもっと遅くなる。 理由は,複数の端末が一つのチャネルを分け合いながら,通信する機構を持つために,データを送っていない待ち時間ができてしまうからだ。回路の同期を取るためのプリアンブル信号が流れている時間もデータの送信には寄与しないため,スループットを低下させる原因になる。 802.11nでは物理層の高速化だけではなく,データ送信時間を増やすことでユーザー・データのスループットを向上させる仕組みが規格化されている。 データ送信より待ち時間が長い スループットは単位時間当たりに通信できるビット数で決まる。では理論上のスループットを計算してみよう。 802.11nの場合

    第9回:フレームを連結して待ち時間を短縮
  • 図解 主要プロダクト/サービス

    ビッグデータ分析に取り組む多くの現場で使われているのが、「Fluentd」「Hadoop」「Amazon Redshift」「Google BigQuery」「Treasure Data」である。これら主要プロダクト/サービスを図解しよう。 Fluentd いろいろな種類のログの収集と出力を一元管理するためのオープンソースソフト。収集したログをJSON形式のファイルに出力する。ログを収集する機能(input)と、 収集したログを出力する機能(output)は、プラグインを組み込むことで拡張できる仕組みになっている。いろいろな種類のログを収集できるのも、プラグインを組み込 むことで、収集可能なログの種類を追加できるためである。 Hadoop 大量のデータを分割して複数のコンピュータで並列に処理するためのオープンソースフレームワーク。ファイルシステム「HDFS(Hadoop Distribut

    図解 主要プロダクト/サービス
  • 詳解 Java SE 8 第16回 パラレルストリーム

    今まで扱ってきたストリームはすべてシーケンシャルに処理を行うストリームでした。 しかし、連載の第2回で記述したように、Project Lambdaの導入理由はパラレル処理にあります。そこで、今月は満を持してパラレルストリームについて紹介していきます。 パラレル処理といっても、パラレルストリームの場合、いくつかの約束を守っていればそれほど難しいことはありません。 早速、試してみましょう。 パラレルストリームの生成 パラレルストリームといっても、パラレルストリーム用のインタフェースがあるわけではありません。今まで通り、StreamインタフェースもしくはIntStreamインタフェースなどを使用します。 異なるのは、ストリームを生成するためのメソッドです。 コレクションからストリームを生成する場合、シーケンシャルなストリームであればstreamメソッドを使用してきました。パラレルストリームの場

    詳解 Java SE 8 第16回 パラレルストリーム
  • 「Java SE 6完全攻略」第89回 プログラムからコンパイル - Compiler API その1

    今月はJavaのプログラムの中から,Javaファイルをコンパイルするために使用されるCompiler APIを取りあげます。 実をいうと,Compiler APIを使わずとも,プログラムの中でJavaコンパイラを使用することができます。これはJava SE 6以前のJavaでも可能です。 例えば,AntやMavenは,コンパイラタスクを実行してJavaファイルをコンパイルすることができます。また,JSPははじめてアクセスされた時にサーブレットに変換され,コンパイルした後に実行されます。これらのアプリケーションはプログラムの中でJavaコンパイラを使用しているのです。 javacコマンドの実体はJavaで記述されており,そのメインクラスはcom.sun.tools.javac.Mainクラスです。このMainクラスのmainメソッドをコールすれば,Javaファイルをコンパイルすることができま

    「Java SE 6完全攻略」第89回 プログラムからコンパイル - Compiler API その1
  • [Jakarta/Apacheウォッチ] 第2回 Javaビルド環境の標準はAntからMavenへ

    Javaのビルド環境に,このところ変化が起き始めている。 ビルドとは,関連する多数のプログラムをコンパイルし,jarやwarなどの実行可能なファイル形式に変換するプロセスである。このビルドを自動化するツールの定番となってきたのが,THE Apache ANT PROJECTが開発しているAntである。 Apacheのソフトウエアも,ビルドにAntを利用しているソフトウエアが大多数を占めていた。しかし,最近開発がスタートしたソフトウエアでは,Mavenというツールを利用するものが増えている。前回ご紹介した GeronimoもMavenを利用しているソフトウエアのひとつだ。 ビルドだけでなく,テストやドキュメント生成も自動化 MavenはThe Apache Software Foundationで開発されているプロジェクト管理ツールである。管理といってもスケジュールや人的リソースを管理する訳

    [Jakarta/Apacheウォッチ] 第2回 Javaビルド環境の標準はAntからMavenへ
  • Raspberry Piの新モデルB+を早速いじってみた

    先週、Raspberry Piの新モデル「モデルB+」が発売されたので(関連記事1、関連記事2)、すぐに日経Linux編集部でも発注しました。それが届いたので、早速触ってみました(写真1)。

    Raspberry Piの新モデルB+を早速いじってみた
    hiroyukim
    hiroyukim 2014/07/25
  • 第3回 systemdの基本操作

    前回までは、Red Hat Enterprise Linux 7(RHEL7)で新たに導入されたLinux起動プロセス「systemd」の動作原理、特にその基礎となる「Unit」の考え方や仕組みを説明した。今回からは、より実践的な内容として、コマンドによるサービス管理の方法、そして、Unitの設定方法について解説を進めていこう。 systemctlコマンドで現在有効なUnitを一覧 systemdの操作の基は、「systemctl」コマンドだ。引数なしでこのコマンドを実行すると、現在有効化されているUnitの一覧が表示される。前回説明したようにUnitにはいくつかのタイプがあるが、「--type」オプションで特定タイプのUnitのみを表示することができる。Unit名が長い場合は途中が「...」のように省略表示されるが、「--full」オプションを付けると省略せずに表示されるようになる。デ

    第3回 systemdの基本操作
    hiroyukim
    hiroyukim 2014/07/24
  • 第2回 Unitの依存関係と順序関係

    systemdによる起動処理の基礎となるUnitでは、Unit間に依存関係と順序関係があるのが特徴だ。Unitの設定方法を説明する前に、ここでは、Unitの依存関係と順序関係について触れておこう。「依存関係」とは、「Unit Aを有効化するならUnit Bも有効化すべき」という関係だ。「順序関係」とは、「Unit Aを有効化する前にUnit Bを有効化すべき」という関係である。 systemdの環境では、Linuxカーネルが起動すると、プロセスID=1の最初のプロセスとして、systemd体となる「/usr/lib/systemd/systemd」が起動する。systemdはこの後、各種Unitの依存関係を検索して、この環境で有効化すべきUnitの一覧を作成する。そして、これらUnitの順序関係に基づいて、順番にUnitを有効化(起動)していくのである。 ただし、すべてのUnitに順序

    第2回 Unitの依存関係と順序関係
    hiroyukim
    hiroyukim 2014/07/23
  • 第32回 効率的なキューを表現するSeq型

    効率的なプログラムを書くには,その処理に適したデータ構造を利用しなければなりません。これまでは,リストや配列といった組み込みのデータ型を主に扱ってきました。しかし,処理によってはリストや配列の代わりに「キュー(queue,待ち行列とも呼ぶ)」や「両端キュー(double-ended queue,deque,デック)」といった,並び(sequence,シーケンス)を表現するデータ構造のほうが向いていることもあります。 今回は,キューを表現する「Seq型」を紹介します。Seq型は,containersパッケージのData.Sequenceモジュールで提供されています。 リストでキューを表現してみる Haskellでどのようにすればキューを表現できるか考えてみましょう。 この連載の第14回でTVar型を使ったメッセージ・キューの実装について紹介したのを覚えているでしょうか。このときは「先頭のポイ

    第32回 効率的なキューを表現するSeq型
  • 第17回 QuickCheckでデータ駆動型テストを行う

    テストには常にある種の不安が残ります。このテストは果たしてすべての場合に妥当だと言えるのか? 何か見落としてはいないか? その見落としは致命的なものではないか? Haskellの静的な型検査をすり抜けてくるバグに対処するには,実際にプログラムを動作させ,HUnitなどで動的なテストを行います。では,動的なテストをすり抜けるバグにはどう対処すればいいでしょうか? 一番単純な対策は,テスト項目数を増やすことです。たいていの場合,テスト項目は「その型の取りうる値を想像し,その例に対してきちんと動作するかどうかを確かめる」という形で記述します。単純に考えるなら,テスト項目が増えれば増えるほどテストの正確さは増していくはずです。 しかし,個々の値に対してテストを記述していくのは手間のかかる作業です。テストを行うべき値の集合に対してテストを行うツールが欲しくなりますね。それが「データ駆動型のテスト・ツ

    第17回 QuickCheckでデータ駆動型テストを行う
  • Acroquest TechnologyがStorm上で動作する機械学習向けライブラリをOSSとして公開

    Acroquest Technologyは2014年1月30日、分散処理フレームワークのStorm上で動作する機械学習向けライブラリ「AcroMUSASHI Stream-ML(Machine Learning Library)」をOSSとして公開した。Acroquest TechnologyのGitHubのページからダウンロードできる。 AcroMUSASHI Stream-MLに含まれるライブラリ群を利用すれば、機械学習に使われるクラスタリングや異常値検知といった処理を分散処理フレームワーク上で実装できる。ビックデータなどの連続的に発生するストリームデータに対して、動的に学習データを更新しながらリアルタイムに分析するといった処理が可能になる。 また、AcroMUSASHI Stream-MLのベースになっているOSSのAcroMUSASHI Streamと組み合わせることで、データの収

    Acroquest TechnologyがStorm上で動作する機械学習向けライブラリをOSSとして公開
    hiroyukim
    hiroyukim 2014/01/31
  • 【西康晴が語るソフト品質・第4回】テストの間引きが下手な企業は,品質事故が多発

    この記事は,「日経エレクトロニクス」と「日経バイト」が刊行した別冊『組み込みソフトウエア2006---品質管理と開発技法の実践的改革A to Z』の掲載記事を抜粋したものです。詳細はこちら。 次に,テスト・レビューの基を解説しよう。実は,テストとレビューで考えるべきことは,かなり共通している。テストでは,テストを実施する前に,テスト項目をきちんと設計しなくてはならない。レビューでも,レビューを実施する前に,指摘項目をきちんと設計すべきである。行き当たりばったりのテストやレビューをしている限り,少ない手間で危険なバグを早くたくさん検出できるようにはならないし,テストやレビューの改善にもつながらない。 テストのやり方にはいくつかの工夫がある(図4)。まず,なるべく網羅性を落とさずに手間を減らし,たくさんバグを検出する方法がある。直交配列表を用いる方法や,All-pair法などが知られている。

    【西康晴が語るソフト品質・第4回】テストの間引きが下手な企業は,品質事故が多発
    hiroyukim
    hiroyukim 2014/01/14
  • 「Haskellは企業でも十分実用になる」、NTTデータがソースコード解析サービスの舞台裏を披露

    NTTデータは、レガシーシステムのソースコードを解析して設計書として出力するサービス「設計書リカバリーサービス」を提供している(ニュースリリース、ITproの記事1)。このサービスは「Haskell」というプログラミング言語で実装されている(ITproの記事2)。2013年11月22日に開催されたイベント「数理システムユーザーコンファレンス2013」のセッション「COBOL meets Haskell ~ Haskellを用いたCOBOLのプログラム解析ツールの開発事例 ~」では、NTTデータ 技術開発部 ソフトウェア工学推進センタの岡田譲二氏が、このサービスをHaskellで実装した理由などを明らかにした(写真1)。

    「Haskellは企業でも十分実用になる」、NTTデータがソースコード解析サービスの舞台裏を披露
  • Haskell使いの高頻度取引の会社にお邪魔した

    先日、日経コンピュータ特集記事の取材で東京都内の某所にある「Tsuru Capital」という、高頻度取引(HFT、High-Frequency Trading)を手掛ける企業のオフィスにお邪魔した。 HFTというのは、プログラムによって株式などの金融商品を数ms(ミリ秒)から数μs(マイクロ秒)で高速に自動取引すること。自己資金で取引する「プロップファーム(proprietary trading firm)」と呼ばれる企業が中心で、米GETCO(2013年7月に米Knight Capitalと合併)などが有名だ。 HFTを行うプロップファームの多くは、米国など海外に拠点を置いており、Tsuru Capitalのように日国内に拠点を置く企業は珍しい。株式売買では、海外企業であっても国内の証券会社と契約し、自社の取引プログラムをその証券会社のサーバーに配置すれば日市場でのHFTは行える。

    Haskell使いの高頻度取引の会社にお邪魔した
  • “パケットの気持ち”になってネットワークを理解する

    日経NETWORKの9月号の特集1では「パケットの気持ちでプロトコル連携を理解する」というタイトルで、IP(Internet Protocol)のパケットが家庭内のLANを出て、やがてインターネット上にあるWebサーバーにまで流れていく過程を説明した。ここでは特集のこぼれ話をご紹介したい。 その昔、記者がネットワークの勉強を始めたごくごく最初の頃に「よくわからない」と思ったのが「レイヤー2のイーサネットと、レイヤー3のIPはどう連携しているのか?」ということだった。そんなとき、日経NETWORKの先輩記者は「わからない?そういうときはパケットの気持ちになって考えるんだ!」と言う。「……なんですかそれは!?」 要するに、通信の流れが理解できないときは一度、「パケットの立ち場になると、いま自分はどんな情報を持って、どこにいるんだろう。次のホップに行くために足りない情報はなんだろう」と考えてみる

    “パケットの気持ち”になってネットワークを理解する
  • 第11回 クロージャによる超軽量並行プロセスの簡単実装法

    最近,ネットの一部で「Erlang」(発音はアーランまたはエアラン)というプログラミング言語が流行している(参考リンク)。Erlangはスウェーデンの通信機器メーカーであるエリクソンにて開発された言語で,エリクソン内部や通信業界はもちろん,Twitter(関連記事)などのオンライン・サービスでも採用されているという。 Erlangの特徴は,複数のプロセスが通信をしながら計算をする「並行プログラミング」を,言語の機能として強力にサポートしていることだ。C言語などの逐次プログラミング言語は,プロセスや通信の機能を内蔵しておらず,こうした機能をオペレーティング・システムに「外注」している。しかし,そのような外付けの仕組みは,メモリー消費量や速度,開発効率などの点でオーバーへッドが大きい。Erlangのような並行プログラミング言語では,プロセスや通信といった機能をプリミティブとして実装することによ

    第11回 クロージャによる超軽量並行プロセスの簡単実装法
  • 第58回 Cの配列をHaskellで利用する

    Haskellでは、リストや配列といったデータ構造に対する処理を高速化するために様々な試みが行われています。しかし、残念ながら現在のHaskell処理系やライブラリの実装には性能面でまだまだ課題があります(参考リンク1、参考リンク2)。Cの配列をHaskellで直接利用するようにすれば、性能の向上を期待できます。 Cで書かれたOSやライブラリのAPIには、Cの配列(およびそうした配列を扱うCの関数)を引数に取るものもあります。HaskellのFFIを利用すれば、HaskellからCの配列を利用できます。今回は、その方法を紹介しましょう。 Cの配列を利用する方法 第22回で説明したように、HaskellのFFIではCのポインタをPtr型で表現します。Cではポインタを使って配列を参照するので、Ptr型を使えばHaskellでCの配列を利用できます。 ただし、ポインタを操作するStorableク

    第58回 Cの配列をHaskellで利用する