ogaharu のブログ

ogaharu のバトル記録

debianインストール後の操作

新しいPCをセットアップする度に何をするか忘れるので記録.
USB にいれた iso ファイルを使いまわしてるので, バージョン依存があるかもしれない.

①apt ができない場合 /etc/apt/sources.list をいじる

apt するとエラーを吐かれるときがある

メディア変更:
'Debian GNU/Linux 8.6.0 _Jessie_ - Official amd64 DVD Binary-1 20160917-14:25'
とラベルの付いたディスクをドライブ '/media/cdrom/' に入れて Enter キーを押してください

iso ファイルを抜いたのに cdrom が設定に遺ってしまっているのでコメントアウトする

vi /etc/apt/sources.list

以下をコメントアウト

#

# deb cdrom:[Debian GNU/Linux 8.5.0 _Jessie_ - Official amd64 DVD Binary-1 20160604-15:35]/ jessie contrib main


#deb cdrom:[Debian GNU/Linux 8.5.0 _Jessie_ - Official amd64 DVD Binary-1 20160604-15:35]/ jessie contrib main

deb http://ftp.jp.debian.org/debian/ jessie main
deb-src http://ftp.jp.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib

# jessie-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.jp.debian.org/debian/ jessie-updates main contrib


②sudo を apt-get

su
apt install sudo
visudo

以下を追加

ogaharu ALL=(ALL:ALL) ALL

vim とかいろいろ入れる

sudo apt install vim

vim ~/vimrc を編集

set number
syntax on
set tabstop=4
set autoindent
set expandtab
set shiftwidth=4


ssh の設定

Debian 8 (Jessie) - SSH サーバ構築! - mk-mode BLOG



CUIにしておく

sudo vim /etc/X11/default-display-manager

コメントアウトする

#/usr/sbin/gdm3

libmemcached-1.0.18 を入れて memslap & memaslap を使えるようにする

memcached の便利ツール群(?) の libmemcached (http://libmemcached.org/libMemcached.html) を入れてみる.

libmemcached に付属しているベンチマークソフトである memslap や memaslap を使いたい.
memslap と memaslap は微妙に別物である様子.
ググってみても, memslap コマンドで現在の memaslap の出力をしてるサイトもあり, かなり混同されている?
名前も似過ぎていてわかりにくいが, 開発中に分岐したとかそんな感じなのだろうか?

前回 memcached はインストール済み.
ogaharuc.hatenablog.com

libmemcached のURLからダウンロード(http://libmemcached.org/libMemcached.html)してmake.

# apt install g++
# cd /usr/local/src/
# mkdir libmemcached
# cd libmemcached
# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
# tar xvzf libmemcached-1.0.18.tar.gz
# cd libmemcached-1.0.18
#  ./configure
# make && make install

とりあえず memaslap コマンドを打ってみる

# memslap
memslap: error while loading shared libraries: libmemcached.so.11: cannot open shared object file: No such file or directory

 
怒られた. No such file or directory? とりあえずググる.

stackoverflow.com

共有ライブラリの依存関係情報を更新するコマンドの ldconfig とやらを使えばライブラリがリンクされるらしい.

# ldconfig
# memslap --servers=localhost:11211
Threads connecting to servers 1
Took 0.149 seconds to load data

動いている. memslap の他に, memflush や memstat も使えるようになっている.
いろいろ試してみる.

# memslap --servers=localhost:11211 --execute-number=100000
Threads connecting to servers 1
Took 1.156 seconds to load data
# memslap --servers=localhost:11211 --execute-number=300000
Threads connecting to servers 1
Took 3.788 seconds to load data
# memslap --servers=localhost:11211 --concurrency=2 --execute-number=10000
Threads connecting to servers 2
Took 0.267 seconds to load data
# memslap --servers=localhost:11211 --concurrency=2 --execute-number=100000
Threads connecting to servers 2
Took 2.732 seconds to load data

出てくるのこれだけ?と調べてみたら memaslap (http://docs.libmemcached.org/bin/memaslap.html)という強化版みたいなものがあるらしい。
ということで memslap じゃなくて memaslap を使いたい. が, このままでは memaslap は使えないようだ.
configure の時に --enable-memaslap すれば良いらしい.

# ./configure --enable-memaslap
# make && make install
(中略)
CXXLD clients/memaslap
/usr/bin/ld: clients/ms_thread.o: undefined reference to symbol 'pthread_key_delete@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:4707: recipe for target 'clients/memaslap' failed
make[1]: *** [clients/memaslap] Error 1
make[1]: Leaving directory '/usr/local/src/libmemcached/libmemcached-1.0.18'
Makefile:3700: recipe for target 'all' failed
make: *** [all] Error 2

 

怒られた...pthread 系のエラーらしいけど解決策がわからないので検索.
bugs.launchpad.net
バグレポートはあるらしいが, 未解決っぽい. なんだろう, ライブラリなんか入れ忘れかなあ...libmemcached-1.0.18固有のもの?
うーん, わからん!とりあえず-pthread をどこかにつければいいらしい.「memaslap 'pthread_key_delete@@GLIBC_2.2.5'」 で検索

www.linuxforums.org

www.voidcn.com

どうやら Makefile の 2937行を LDFLAGS =  -L/lib64 -lpthread にすれば良いらしい(???)
Makefile を編集.

# diff Makefile Makefile.org
2937c2937

< LDFLAGS = -L/lib64 -lpthread

---

> LDFLAGS =

 
一応 make は通った

# memflush --servers=127.0.0.1:11211
# memaslap -s 127.0.0.1:11211
servers : 127.0.0.1:11211
threads count: 1
concurrency: 16
run time: 600s
windows size: 10k
set proportion: set_prop=0.10
get proportion: get_prop=0.90
cmd_get: 63711111
cmd_set: 7079024
get_misses: 44362628
written_bytes: 12282098170
read_bytes: 21755243702
object_bytes: 7701978112

Run time: 600.0s Ops: 70790135 TPS: 117977 Net_rate: 54.1M/s

どういう出力が正しいのか検証していないのですが, とりあえず実行はできたみたい.
memslap と memaslap のオプション詳細や出力詳細については後日.


参考

l-w-i.net

memcached-1.5.1 をソースからインストールする

VM 上で memcached を動かす.
用途は性能評価のためなので, 運用ではなくベンチマークを取る目的で進める.

環境は Debian jessie.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie


まず, memcached のサイト(http://memcached.org/)からファイルをDLしてくる.

$ cd /usr/local/src/
$ wget http://memcached.org/files/memcached-1.5.1.tar.gz
$ tar -zxvf memcached-1.5.1.tar.gz

 make の前に libevent を入れる.

$ apt-get install libevent-core-2.0-5 
$ apt-get install libevent-dev
$ ./configure --prefix=/usr/local/memcached 
$ make && make test && sudo make install

ちなみに libevent を入れ忘れるとこうやって怒られる. libevent を入れ忘れないように.

$ ./configure --prefix=/usr/local/memcached 
$ make && make test && sudo make install
(中略)
checking for libevent directory... configure: error: libevent is required. You can get it from http://www.monkey.org/~provos/libevent/
If it's already installed, specify its path using --with-libevent=/dir/


とりあえず入ったようなので, 起動. 

 memcached -m 64 -p 11211 -d

オプションは, -m でメモリ量指定, -p でポート指定(default:11211), -d でデーモン化.
詳細はまだ調べてないので, 状況に合わせて変更予定. 

memcachedプロトコルはざっくりこんな感じ

機能 コマンド レスポンス
get get <key>\r\n

VALUE <key> 0 <bytes>\r\n

<data block>\r\n

END\r\n

set

set <key> 0 0 <bytes>\r\n

<data block>\r\n

STORED
delete delete <key>\r\n DELETED

 
telnet で繋いで適当に投げてみる

$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set foo 0 0 3
bar
STORED
get foo
VALUE foo 0 3
bar
END
delete foo
DELETED

動いてるっぽいのでとりあえずOK. 実験目的なので自動起動にはしていない.
次はベンチマークソフトのmemslap周辺について纏めたい.


参考
memcached.org
gihyo.jp
d.hatena.ne.jp

ブログ始めました.

ツイッターを始めたのを機にブログを開設しました. 

ブログと言っても概ねインストールバトルの過程を記録することが主になると思います. 

ドキュメントを雑に読む癖があり度々詰まってしまうので, とりあえず自分がやったことを記録できたらと思います.