体力,気力,ときどき知力

情報系HPC大学院生の日頃のメモなど.intel CPU, SIMD, AVX, vim, Linux,簡単なことから書きはじめてみたBlog

ずっと前から言ってたライブラリを公開してみました.

sourceforge.net


よければどうぞ.

SCPをなめちゃいけない.[圧縮転送・踏み台経由]

「えー!scpとか初歩のコマンドじゃん!rsyncの方が優秀でしょー?」
なんだと!scpをなめちゃいけない.

rsyncが優秀なのは差分転送とか権限関連もコピーできるところだが,
別に普通に使ってる分にはscpは充分に優秀だから使って困ることはきっとない.

ちょっとscpの本気の一部をまとめといてやる.
(っていうかscpくらいmanを読めという話)


・ファイルを圧縮して高速転送.トラフィックを減らす.
scp -C file usr@name:~/

・暗号化方式を変えて高速転送 (ただしセキュリティは落ちる.)
scp -c arcfour128 file usr@name:~/

どのくらい安全じゃなくなるのかは知らない.
でもローカル通信なら良いんじゃない?rcpとか最近入ってないサーバ多いし,rcpの代わりにでも.
arcfour128っていうのが一番早かったんだってさ.
↓の人がそう言ってた.
大容量ファイルのSCP転送を高速にする方法 - 元RX-7乗りの適当な日々


・踏み台経由の転送
(私の修士時代の大学はプロキシ経由しないと学外IN/OUTできなかった.)
scp -o 'ProxyCommand ssh 192.168.0.1 -W %h:%p' file user@name:~/


以上です.おやすみ.

Git, 容量の大きいリポジトリのエラー,(HTTP = ....ってやつ)

Gitlabを使ってる.そっちのconfigファイルはうまいこと直して.(いつか書くかも)
ユーザ側で使う人がどうやって解決すればいいのか書いとく

pushするとき(HTTP=413)

git config --global http.postBuffer 524288000


cloneとかpullするとき(HTTP=200)
fatal: early EOF

クライアント側で
git config –-global core.compression 0

    • globalは-globalかも?

そうやって書いてるところもあったよ

色々やりたいこと[scilab導入]

ここのところ修論とかで,豆知識がなかったけど,やりたいことが2つほど出来たので,
毎日30分でもやろうと決意して,ブログを再開する.

1) 開発中のソフトの管理をSorce ForgeかGit hubに移行する
2) scilabを勉強してみる

(1)はさておき,(2)は楽しいと思う.
適当なToolboxを作ってみようと思う

とりあえずFedora16でも19でも
yum install scilab
で入ったので,これはこれで良しとする.

でもscilabコマンドを実行すると,

[GTK look and feel - com.sun.java.swing.plaf.gtk.GTKLookAndFeel] not supported on this platform
Error during the initialization of the window:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.

とか言われて困った.
どうもsshでやってるからXが上がらなくて文句言ってるらしいので
scilab -nogui
これでgui切って解決.defaultでguiを切る方法が不明だがまぁいい.

とりあえず今日は導入まで.

サーバを作ったけどなんか遅かったときの原因究明(dstat, ethtool)

こんばんは.久々の更新です.ちょっと色々バタバタしていたので.
久々のネタはクラスタを作った時のバッドノウハウです.
今回自分は,市販のPC4台を作ってクラスタを構築しました.
クラスタ構築の方法はまた別の機会に.

先に落ちを言うと,ミスって100Mスイッチを使ってしまって速度が出ず,先月末に2,3日それで悩みました.(ひどい話だ)
しかし,いざサーバを組んで速度が出ないとき,ハードウェアに原因があるとはなかなか思わない上に,さらに僕のサーバは遠隔にあるので,すぐにはハードウェアを見に行けない.
ハードウェアが悪い!とどうやって検証,断定して,どうやってそれを検証したかという話.

1. タスクマネージャ的なやつ(dstat)
まず,なんか遅いと思ったらネットワーク帯域のベンチマークをするのが第一.
詳細なネットワークのベンチマーク結果が必要ないなら,scpで適当な所にデータを送ってみると速度が出るので案外分かりますが,
ちゃんとやるなら,"dstat"というコマンドがあります.yumで落とせます.

dstat 1とやると,様々なシステム情報が出ます.
(1にすると1秒おきにシステム情報を取得.)
1つめはCPUのuserプロセスの使用率,systemプロセスの使用率,waitなど
2つめはDiskのI/O
3つめはネットワークのSend/recv.
他は良くわかんない.

取り敢えず,3つめを見れば良くて,なんかネットワークに負荷をかけて転送速度を見れば宜しい.
自分の環境だと,100Mbpsなら10~12MB/s出て,1000Mbpsなら80~90MB/s出ました.

今回は10~12MBだったので,そもそもNICかネットワーク機器がおかしいと判断.

2. 原因特定に至るまで(ethtool)
NICがおかしいか,ネットワーク機器がおかしいかを試してみるために,NICのシステム情報を見る方法.
ethtool (Ethernetの名前)を打てば情報が得られる.
Ethernetの名前はifconfigをするとわかる.eth1とか,そういう名前だと思う.

やると色々出てくるけど,最初に見るのは下のほうの
Speed
Duplex
の2つ.これが1000とfullになってればいいけど,今回は100,fullだった.

次に見るのは,supported link modesとAdvertised link modes
supported link modesは自分のNICの情報.ここに10,100,1000が全部あればOK
Advertised link modesは相手の情報.今回はここに10,100しかなかった.

これでLANケーブルかスイッチが悪いと断定.行きがてらスイッチとLANケーブルを買って行き,差し替えたら直った.

なお,Advertised link modesに1000があるのにspeedが100だったら,sysconfig/network-scripts/ifcfg-eth1を編集すると直せる.

sshでコマンドだけ送る

なんか意外と知らない人が多いようなので一応メモ
rshが許可されていればこんなことしなくていいんだけど,
使えないならsshをこういう風に使えば代用できるよって話.

ssh 192.168.0.1 "ls"

などでコマンドを相手のサーバで実行して結果を表示できる.

自分はクロスコンパイルしたいときなどによく使っている.
何台かのサーバに違うバージョンのコンパイラ入れておいて,
コンパイルを相手のサーバで実行するということ.

scpなど組み合わせてご自由に.

ちなみにrshなら同じことが

rsh 192.168.0.1 ls

とかでできる.
でもrshはパスワードとかを暗号化しないから,sshの方がいい.

はてなブログにソースコードを載せる

どうやって載せるんだろうと思ってたけど無精で調べてなかった.
http://sue445.hatenablog.com/entry/2012/11/18/223809
に詳しく乗っていたので,ちょっとテストしてみる.

#include<stdio.h>
int main()
{
  printf("hello world");
}


書いたのは
#include
int main()
{
printf("hello world");
}

っていうのを">|c|"と"||<"でくくってみただけ.

どうだろうか.参考ブログから変えたところはjavaをcにしてみたところ.
あとインデントってどうするんでしょうね.今回は半角スペースにしておいた.

これの書き方ははてなブログで調べた.C言語Java以外にも色々あるんだってさ

http://hatenadiary.g.hatena.ne.jp/keyword/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%89%B2%E4%BB%98%E3%81%91%E3%81%97%E3%81%A6%E8%A8%98%E8%BF%B0%E3%81%99%E3%82%8B%EF%BC%88%E3%82%B7%E3%83%B3%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B9%E3%83%BB%E3%83%8F%E3%82%A4%E3%83%A9%E3%82%A4%E3%83%88%EF%BC%89