モンスターカレンダー

« 2015年5月
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

いっつもやり方忘れるのでメモ。

以下、SLinuxを前提
RHELもCentも同じ手順でいけるはず。

1. cifs-utilsのインストール
# yum -y install cifs-utils

2. マウント先フォルダの作成
# mkdir winshare

以下、マウントフォルダをwinshare、Windowsの共有フォルダをshareとする。

「FreeBSDはもう時代遅れになります。」スレより。



506 :504 :04/01/27 11:27
>>505
で、Lock ContentionがLinux並になるのマダー?
503の話だと、開発者のマンパワーが同じだとして4年ちょっとだよね。

じつはもっと進んでる!というなら(2.3の後半とか?)あと何年かかるか予想できますか?

510 :500 :04/01/29 01:17
>>506
> で、Lock ContentionがLinux並になるのマダー?
基本はspinlockマンセーなLinuxと、極力blocking lockを使おうとしている
FreeBSD5では方向性が全然違うんで、
「Lock ContentionがLinux並になる」ってのはあまり意味のない比較だということを
あらかじめ念を押しておく。

で、FreeBSDのロックの細粒度化については以下の文書を見るといい。
ttp://www.freebsd.org/doc/en_US.ISO8859-1/articles/5-roadmap/major-issues.html#SMPNG
残っている大物というと、やはりVMとVFSまわり。
とはいえ、これも今年中にはほとんどGiant freeなところまで持っていけると
俺は思っている。



はい。もはや地球語ではないですね。
大雑把に説明すると、あるリソースが一つあるとき、一方が使っている間はもう一方が使えないようにするための構造のお話です。
わかりやすく説明すると、



512 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 00:06
すまん 
spinlock 
やさしく説明してくれ。 

513 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 00:48
>>512 
小便しに行って便器が全て使用中だった場合に便器の後ろで 
ウロウロするのがspinlock。大便しに行って、全ての個室が使用中で 
別の便所に移動するのがblocking lock。 
どちらを使うと得であるかは、待たされる時間がどの程度かによって異なる。 

514 :名無しさん@お腹いっぱい。 :04/01/31 01:33

>>513
非常にワロタ。

516 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 13:39
>>513 
すまん 
想像力が働かず 
より一層わからん。 

517 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 13:56
Linux: ウンコは家でするのが基本 
FreeBSD: ウロウロするのは「ダサい」 
Solaris: 便所は十分用意してある 

518 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 14:03
吹き出したよ。なんとかしてくれ 



ということです。死ぬほどワロタ。

何故Spin Lockが何故有効かは、



519 名前: 500 [sage] 投稿日: 04/01/31 14:15
>>513 
ワロタ。うまいな。 

>>516 
lockが競合したとき、lockを取れなかった側が 
その場でbusy loopして待ち続けるのがspinlockで、 
lockの取得を一旦あきらめて別のrunnableなスレッドに 
コンテキストスイッチするのがblocking lock。 
spinlockでは、競合が起こっている時間が 
即CPU時間の浪費につながるので、 
lockの競合はできるだけ避けなければならない。 
一方blocking lockでは、runnableなスレッドが他にいる限り 
そちらの実行を続けられるので、spinlockよりは競合を受け入れやすい。 
(とは言え、コンテキストスイッチにはコストがかかるので 
競合しないに越したことはないが......) 

何年か前までは、spinlock主体のアーキテクチャは 
「原始的」でありscalabilityがないと言われていたんだが、 
Linuxは徹底的なlockの細粒度化やlockに頼らないデータ構造(RCU)の導入とかで 
見事その定説を覆してみせたようだ。 



ということです。RCUとかわかんないけど。

Spin lockはLinuxの2.6カーネルにも導入されたそうですが、シングルプロセッサでどう有効なのかよくわかんないです。カーネルスレッドがプリエンプタブルだから?割り込みが入るまでの時間はどうやって予測してんだろ?

という俺の疑問は置いといて、次の質問。



522 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 16:39
Solarisにあるアダプティブロックとは、 
ある一定数スピンして、それでもロックされているなら 
コンテキストスイッチ、という意味なんでしょうか? 

523 名前: 500 [sage] 投稿日: 04/01/31 17:09
>>522 
単純なblocking lockでは、競合が発生した場合 
すぐにコンテキストスイッチの動作に移るんだが、 
*対象のlockがすぐに解放される見込みがある場合*は 
しばらくの間spinを試みた方がトータルコストを下げられる可能性がある。 
(コンテキストスイッチ自体がコストの高い操作なので) 
で、この「spinをした方が得かどうか」の判断材料として 
「対象のlockを保持しているスレッドが、現在他のCPU上で実行中である」 
かどうかを見るのがadaptive lock。 

blocking lockの仕組みがちゃんとできていればadaptive lockへの改造は簡単。 
実際FreeBSDにもかなり前からadaptive lockのコードが入っている。 
(現在はデフォルトでoffになっているが...) 
ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/kern_mutex.c#rev1.92 
[x86]CPUアーキテクチャについて語れ![RISC] 
「おしっこをして手をあらってでてくる」。 トイレが一室しかないと混雑時は長蛇の列ができます。 1.おしっこをする 2.手を洗う。 二段のパイプにすると、手を洗ってる間に別の人が用を足せるようになり ます。 トイレ一室で二人が気持ちよくなれて、効率が倍になります。 もうすこし深くしてみましょう。 1.ジッパーを下げる 2.ちんちんとりだす 3.放尿する 4.しずくを切ってちんちんしまう。 5.ジッパーをあげる 6.手を洗う 7.紙を使って手をふく 7ステージに分解すると、なんと 7人が同時に処理できます。 これがパイプラインです。

VMWare 11でMac OSX Yosemiteを動かす

| コメント(0)

タイトルの通り、Windows上のVMware 11でOSX Yosemiteを動かしてみるのを目的としたエントリです。

※MacOSXは有償です。また、通常VMware上では、Mac全般は動きません。そこはよしなにやります。

1. VMwareをインストール
 これはもう、誰でも出来るかと

2. VMware unlockerの導入
 unlocker 2.0.4でいけました。
 導入方法はちゃんとReadMEついてるので其方を参照ください。

3. VMware Yosemiteが既にインストールされているVMイメージの準備
 ここが一番ネック。でも、ネットで調べると出て来ます。
 こことか

Smartyで0抜き(4/1)表示等々

| コメント(0)

Smartyで0抜き表示

{$smarty.now|date_format:"%-m月%-d日"}

のように、-m -d とする。

※ただし、2015-4-1 というフォーマットはできなくなる

Google ChartとSmarty

Google Chartでは、月は0~11の表記。
Smartyで普通に月フォーマットすると、1~12
以下のようにすると、実は月を -1 できる。

{$smarty.now|date_format:"%Y,%-m-1,%-d"}

NFC搭載のWindowsPhone8.1のNDEF機能でFeliCaをごにょごにょしてます。
まだ情報収集段階ですが。

やってみよう。って思う人向けメモ

private void textBox_KeyDown(object sender, KeyEventArgs e) {
if (e.Control && e.KeyCode == Keys.A)
textBox.SelectAll();
}


なんで最初からこの機能ついてないんだろう。って、毎回思います。
カスタムコントロール作った方がいいのかな。

元記事は、microsoftフォーラムより

3stepで貴方も出来るVM+HyperV

1. 仮想マシンをシャットダウンする。

2. 仮想マシンのvmxをメモ帳で開き、以下の3行を追加する

hypervisor.cpuid.v0 = "FALSE"
mce.enable = "TRUE"
vhu.enable = "TRUE"

3. 仮想マシンの設定を変更する(以下参照)

カテゴリ