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

情報系大学院生 兼 HPC系ソフトウェアエンジニアのメモ書き.やったことを貼って後日にコピペ再現するために書いているので新規性・汎用性・芸術性は考えてません.数値計算,高精度演算,SIMD, vim, Linuxなど.

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