CentOS に Neighborhood Graph and Tree を入れてみる

NGT(Neighborhood Graph and Tree)というものを入れてみます。

いわゆる高次元データを高速に検索できるOSSですね。

とりあえず先に必要なものを入れておきましょう。

sudo yum -y install git
curl -R -O https://cmake.org/files/v3.1/cmake-3.1.1-Linux-x86_64.sh
sudo sh cmake-3.1.1-Linux-x86_64.sh --prefix=/opt/toolchain
export PATH=/opt/toolchain/cmake-3.1.1-Linux-x86_64/bin/:$PATH
sudo yum -y install gcc
sudo  yum install gcc-c++

あとはgit cloneなりしてソース持ってきます。その後はReadme通りですね。

$ cd NGT-x.x.x
$ mkdir build
$ cd build 
$ cmake ..
$ make 
$ make install
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

環境によってはライブラリがlib64じゃないところにmake installでコピーされるかもしれないので以下のように。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

コンパイル時にいろいろスイッチで指定できますが共有メモリ上で動作させる場合は以下のようにしときます。

cmake -DNGT_SHARED_MEMORY_ALLOCATOR=ON ..

インストール後はコマンドラインツール(ngt)が使えたりしますので良しなに。

入れてみたものの、上手く活用できるか自分のスキルに不安があります()

CentOS がCPU張り付いて起動しない

主にAzure上のCentOSなイメージで、CPU使用率が100%に張り付いて起動しないケースがたまにあるみたいです。

うそかほんとか微妙な現象

  • インスタンスサイズがA1で頻発する
  • データディスクをアタッチしてると頻発する

よくわかりません。

どうもこちらの問題が該当しそう?

インスタンスサイズをA2にすると大丈夫らしいですが。

暫定対応

というわけで、さくらいさんがパッチをあてたRPMパッケージを作ってくれました。

Kernel-firmwareパッケージを最新にしてから以下のコマンドみたいな。

# rpm -Uvh kernel-2.6.32-504.12.2.el6.x86_64.rpm

言わずもがな自己責任でお願いします。

その他カーネルパニックする場合とか、同じ原因かもしれないので一度試してみてはどうでしょう。