ablog

不器用で落着きのない技術者のメモ

git の検索結果:

GitHub for Windows をインストールした

今まで GitHub に対する操作は Windows、Mac、Linux からコマンドラインで使ってたけど、git が入っていない Windows で使いたくて、GitHub for Windows をインストールしてみた。 ダウンロード GitHub Desktop | Simple collaboration from your desktop から [Download GitHub Desktop] をクリックする。 インストール GitHubSetup.exe を実行…

GitHub に *.github.io という URL の Web サイトを作る

今更だけど、GitHubを使って3分でHPを公開する。 - Qiita を参考に GitHub に Web サイトを作ってみた。 ブラウザで GitHub にログインする。 [New repository] をクリックし、"Create a new repository" というページに移動する。 [Repository name] に "GitHubアカウント名.github.io(例: yoheia.github.io)" と入力し、"Create repository"…

pcstat でファイルのページキャッシュへの乗り具合を調べる

…t https://github.com/tobert/pcstat/raw/2014-05-02-01/pcstat.x86_64 $ chmod 755 pcstat 使ってみる $ dd if=/dev/urandom of=testfile bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 1.09541 s, 9.6 MB/s $ pcstat testfil…

Java Mixed-Mode Flame Graphs で Java の CPU ネックをフルスタックで分析する

…できます。 以下は GitHub - martint/jittest: Demonstrate JIT compiler issue in java 7 のワークロードを実行して Flame Graphs で可視化したものです。 以下は Java One 2015 での Brendan Gregg のスライドです(YouTube もあります)。 JavaOne 2015 Java Mixed-Mode Flame Graphs from Brendan Gregg 「Bren…

Bitbucket のプライベートリポジトリを使ってみる

…ket | The Git solution for professional teams にログインする(アカウントは何年も前に作っていたので)。 [Repositories]-[Create repositories] で以下を入力し、"Create repositories" を押す。 Repository name: 任意のリポジトリ名 Access level: "This is a private repository" にチェック Repository type…

AWR/Statspack レポートを CSV に変換するツール

GitHub - khailey/awrcsv: project by Clive Bostock, extracts AWR text files into comma separated value files and has templates for Excel reports GitHub - yasushiyy/awr2csv: converts Automatic Workload Repository (AWR) reports into csv

Oracle Linux 6 on OracleVM では gettimeofday が vDSO でない

….. diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c index 4df6c37..205ad32 100644 --- a/arch/x86/vdso/vclock_gettime.c +++ b/arch/x86/vdso/vclock_gettime.c @@ -22,6 +22,7 @@ #include <asm/hpet.h> #include <asm/un…

DBサーバの空きメモリサイズの見方(Oracle Database on Linux)

… kernel の git repository から /proc/meminfo に MemAvailable が追加された際の変更内容からの抜粋です。 /proc/meminfo: provide estimated available memory Many load balancing and workload placing programs check /proc/meminfo to estimate how much free memory is availa…

vm.min_free_kbytes からの wmark_{min|low|high} 算出式

…} https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/mm/page_alloc.c?id=refs/tags/v3.10.91 static void __setup_per_zone_wmarks(void) { unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10); unsigned long lowm…

"Reducing Memory Access Latency" が素晴らしすぎる

Reducing Memory Access Latency by Satoru Moriya (Hitachi LTC) が素晴らしすぎるのでメモ。 まとめ vm.swappiness = 0 により、解放可能なページキャッシュがあるうちはプロセスのメモリ(anon page)をスワップアウトしないようにできる*1。 swappines=0 にしても 解放可能なページキャッシュがあるのにプロセスのメモリがスワップアウトされる問題があったが、この資料を書いた守屋さんのパッチが…

NFSの排他制御について

NFSの排他制御についてメモ(Linux限定)Managing NFS and NIS: Help for Unix System Administrators作者: Mike Eisler,Ricardo Labiaga,Hal Stern出版社/メーカー: O'Reilly Media発売日: 2001/08/15メディア: ペーパーバックこの商品を含むブログを見る 11.2 NFS and file locking Mandatory locking and NFS N…

Linux のページテーブルのサイズの見方と見積式

…df kernel/git/stable/linux.git - Linux kernel stable tree Paging - OSDev Wiki Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる - naoyaのはてなダイアリー LKML: "Kirill A. Shutemov": [PATCH 1/2] mm: rename mm->nr_ptes to mm->nr_pgtables wikipedia:ページング方式…

大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由

…す。 http://git.savannah.gnu.org/cgit/gawk.git/tree/io.c?id=gawk-3.1.7 /* iop_alloc --- allocate an IOBUF structure for an open fd */ static IOBUF * iop_alloc(int fd, const char *name, IOBUF *iop) { struct stat sbuf; struct open_hook *oh; int…

funcgraph で Linux カーネル内のボトルネックをミクロに追跡する

…tps://raw.githubusercontent.com/brendangregg/perf-tools/master/kernel/funcgraph # chmod u+x funcgraph # mount -t debugfs debugfs /sys/kernel/debug # ps -ef|grep [c]hrome # ./funcgraph -Htp 4511 vfs_write 参考 perf-tools/funcgraph at master · …

perf + Flame Graphs で Linux カーネル内のボトルネックを特定する

…tps://raw.githubusercontent.com/brendangregg/FlameGraph/master/stackcollapse-perf.pl $ wget https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl root 以外でも perf を使えるようにする # echo 0 > /proc/sys/kernel/perf_event_paran…

OpenJDK の HotSpot のソースコードを読む

素敵なサイト 徹底解剖「G1GC」実装編 HotSpot Memo ただのメモ OpenJDK をダウンロードする http://download.java.net/openjdk/jdk7/ から openjdk-7-fcs-src-b147-27_jun_2011.zip をダウンロードする。 解凍する $ unzip openjdk-7-fcs-src-b147-27_jun_2011.zip 覗いてみる $ cd openjdk $ tree -d -L 2 . ├─…

Huge Page の解放について

…Documents/github/yoheia/misc/hugepage_test/hugepage-shm...done. (gdb) b 68 Breakpoint 1 at 0x40076c: file hugepage-shm.c, line 68. (gdb) r Starting program: /home/yazekats/Documents/github/yoheia/misc/hugepage_test/hugepage-shm shmid: 0x250…

micbench をインストールしてみた

…ンストールする $ git clone git://github.com/hayamiz/micbench.git $ cd micbench/ $ ./autogen.sh $ ./configure $ sudo make install 使ってみる とりあえず実行 $ micbench mem -m 1 -t 10 -R -a 0:c0 -s 16K -v shuffle time: 0.000022 loop end: t=10.000213 access_patte…

Perfmonger をインストールしてみた

インストール $ git clone git://github.com/hayamiz/perfmonger.git $ cd perfmonger/ $ ./autogen.sh $ ./configure $ sudo make install 使ってみる $ perfmonger record -i 0.1 {"time": 1418432543.6794, "cpuinfo": {"nr_cpu": 4, "all": {"usr": 0.00, "nice": 0.…

prociostat.pl と visualize_prociostat.R で Linux のプロセスのボトルネックを分析する

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.parent…

"Linuxのしくみを学ぶ - プロセス管理とスケジューリング"を読んだ

id:syuu1228 さんのLinuxのしくみを学ぶ - プロセス管理とスケジューリング がとてもわかりやすかった。ここまで分かりやすさと深さを両立した説明は初めて読んだ。プロセススケジューラの自分用の備忘録です。 タイマ割込みのタイミングでプロセスの切り替えが起こる Linux 2.4 のランキューは単純なリスト構造で線形探索になるので探索コストがO(n) O(1)スケジューラは優先度ごとのプロセスリストの配列になっているので計算量はO(1) CFSではプロセスが使用した…

HugePage は free コマンドで見ると used に計上される(2)

…Documents/github/yoheia/misc/hugepage_test/hugepage-shm...done. (gdb) b 89 Breakpoint 1 at 0x40086f: file hugepage-shm.c, line 89. (gdb) run Starting program: /home/yazekats/Documents/github/yoheia/misc/hugepage_test/hugepage-shm shmid: 0x1…

NeoBundle をインストールしてみた

Vim

…tps://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh ~/.vimrc に以下を追記する set laststatus=2 set t_Co=256 let g:Powerline_symbols = 'fancy' let g:lightline = { \ 'colorscheme': 'wombat', \ 'component': { \ 'readonly': …

oh-my-zsh をインストールしてみた

…t https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf % wget https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf % mv PowerlineSymbols.otf ~/.fonts/ % fc-cache -vf ~/.fonts/ % mkdir -p ~/…

gettimeofday(2) は VDSO によりユーザー空間で実行される

….. diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c index 4df6c37..205ad32 100644 --- a/arch/x86/vdso/vclock_gettime.c +++ b/arch/x86/vdso/vclock_gettime.c @@ -22,6 +22,7 @@ #include <asm/hpet.h> #include <asm/un…

ASMLib Kernel Driver とは

…oracleasm.git/blob - kernel/oracleasm.c あたりがコア部分かな。 /* -*- mode: c; c-basic-offset: 8; -*- 2 * vim: noexpandtab sw=8 ts=8 sts=0: 3 * 4 * NAME 5 * oracleasm.c - ASM library kernel driver. 6 * 7 * AUTHOR 8 * Joel Becker <joel.becker@oracle.co…

Oracle VM で使われている Xen のソースを読む

…s.xen.org Git - xen.git/summary に行って、xenbits.xen.org Git - xen.git/commit から tree をクリックして、xenbits.xen.org Git - xen.git/tree を見れば良さそう。 Xen のソースを git リポジトリから clone する clone する $ mkdir xen $ cd xen $ git clone git://xenbits.xen.org/xen.git In…

.zshrc や vimrc とかの設定

… $ cd ~ $ git clone https://github.com/yuroyoro/dotfiles.git $ cd dotfiles $ ./setup.sh スクリーンショット エラーが出てるところは後で調べよ。 変更箇所 dotfiles/.zshrc.custom を以下の通り変更 45 # POH="( &#42154;&#8979;&#42154;) $" 46 POH="(^-^;) $" カラースキームを入手する $ mkdir ~/.vim/c…

Linux で huge page を使っているプロセスを調べる方法

…Documents/github/yoheia/misc/hugepage_test/hugepage-shm おまけ /proc/[pid]/smaps を覗いてみる [root@yazekats-linux ~]# grep -C 12 'KernelPageSize: 2048 kB' /proc/3834/smaps 2aaaaac00000-2aaabac00000 rw-s 00000000 00:0b 1277985 /SYSV00000002 (deleted…

ページテーブルを使って仮想アドレスから物理アドレスを探索する仕組み

OS

先日、HugePages を使うとメモリの探索が遅くなるんじゃないかと聞かれて、仮想アドレスの先頭部分で物理ページを探索して、後半のアドレスでページ内のどのアドレスか探索するので、無問題じゃないかな。自分の妄想だけど。と答えたが、だいたいあってそう。 ページディレクトリテーブルのアドレスをCPUにセットするためのレジスタとしてCR3レジスタが用意されています。MMUは仮想メモリ空間へのアクセスに対してCR3レジスタに書かれたページディレクトリテーブルのアドレスへアクセスして探…