タグ

ブックマーク / mkosaki.blog46.fc2.com (19)

  • 革命の日々! CFSのnice値について

    某所で話題に上がったので軽くまとめてみる 以下のようなテストプログラムを走らせてみる。nice値5とnice値10のスレッドが ビジーループを何回回すことができるか競争するというプログラムである struct thread_param { int prio; long counter; }; #define barrier() __asm__ __volatile__("": : :"memory") void* loop(void* _param) { struct thread_param *param = _param; setpriority(PRIO_PROCESS, 0, param->prio); usleep(1000); for(;;) { param->counter++; barrier(); } return NULL; } int main() { pthread

    tyru
    tyru 2015/05/04
    「カーネル内部で優先度1違う毎に1.25倍のボーナスがついているので、1.25^5≒3」「nice値が5変わるごとに3倍CPU時間が変わる」
  • 革命の日々! C++ 用語やばい。超やばい。penisを意味するぐらいやばい

    いつものようにLKMLで駄文を書き散らかしていると、Hugh Dickins 先生からプライベートで忠告メールが KOSAKI のメールにはしょっちゅう hoge->fuga member だどうした。とか出てくるけど、"member"ってEnglishでは"penis"の婉曲表現だぜ。分かって使ってる? な、なんですとーー!! ・・・たぶん、ほとんどの日人は知らないと思います(;_; 追記: あとで気づいたが、このときは、メモリ回収処理を途中で打ち切る議論をしていたので、メールには sc->may_cut_off member と書いてあった。つまり「ちん○切り落とすぞ」機能を議論していたことになる。 うーん、それは震えが来るかもしれん。

    tyru
    tyru 2014/11/24
    memberはpenisの湾曲表現(というかスラング)らしい
  • 革命の日々! __attribute__(alloc_size) を使わないと_FORTIFY_SOURCE を活かせないよ。という話

    _FORTIFY_SOURCEというバッファーオーバーフロー攻撃を防ぐのにとても有用なマクロがある。 知らなかった人は以下のmanでもまず見てください http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/feature_test_macros.7.html _FORTIFY_SOURCE (glibc 2.3.4 以降) このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが 実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。 現在の実装では、以下の関数にチェックが追加されている: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3),

    tyru
    tyru 2013/05/05
    Vimでも_FORTIFY_SOURCE使ってた記憶あるけどちゃんと活かせてるのかな?と思って検索したら__attribute__((unused))しか使ってなかった。でもかなり多くのプラットフォームに移植されてるから使いにくいんだろうか。
  • 革命の日々! relatimeがどこで実装されているのか調べてみた

    ITProのLinuxチューニングの記事がひどい事になっている件について http://mkosaki.blog46.fc2.com/blog-entry-535.html という数前の記事について、id:shiumachiさんが追試してくれました。 つ http://d.hatena.ne.jp/shiumachi/20080605 むむむ、すばらしいです。 特にrelatimeのあたりが秀逸です。relatimeの性能測定って他にあんまりないのではないかしら。 複数の方からご指摘いただいておりますが、noatimeはあの記事のなかで数少ない、現在でも意味のあるオプションです。 せっかくなので、お礼がてら、relatimeについてちょいと追記してみます。 まず、atimeまわりのオプションの意味から デフォルト:   常にatimeを更新する noatime:    常にatimeを更

    tyru
    tyru 2012/03/11
    relatime: inode上でatimeがmtimeやctimeよりも古くなってしまった時だけ更新
  • 革命の日々! Kees Cook の symlink restrictions on sticky directories が -mm入り

    ようするに /tmp に symlink があるときに、ownerが自分じゃないときはrootであってもsymlinkたどれないようにするよ。というパッチである 背景なんですが、Unixの古典的なセキュリティーホールにrootが O_EXCL つけずに/tmp以下のファイルを開くとアタッカーに利用されて脆弱性になるというものがありまして、古典的には以下のストーリー 1.悪意のあるユーザ Bob が ln -s /etc/passwd /tmp/app-A-tmpfile とかリンクを貼る 2.root権限をもったデーモンアプリが /tmp/app-A-tmpfile を O_EXCL なしで開く(そして成功する) 3.そのアプリが今開いたtmpファイルに適当にデータを書く 4.なぜか /etc/passwdが破壊される ← イマココ O_EXCL以外の方法、たとえばstat(2)とかで確認

  • 革命の日々! PayPalアカウントがロックされてしまった件

    なんというかですね。最近の大手Webサービスはすごいんですよね。位置情報的に普段と 違うところからログインすると、「なりすましちゃいまっか?人かどうか再確認してもええでっか?」と 聞いてくる。すばらしい。 ところでですね。わたし最近USに引っ越したんですよ。厳密に言うとまだ住所ないんですけど。まあそれはそれとして。すると、住所や電話番号と個人情報の半分以上が消えてなくなる。 で、ですね。PayPalさんはセキュリティチェックで一旦ロックアウトしたあと、お前が物なら クレジットカード番号言えるはずや、入力してみー。とか言ってくるわけですよ。 で、わたし運悪く渡航直前にカードをゴールドにアップグレードしてたんですよね。ラウンジつかいたいなー とか思って。はい、カード番号変わりました。古いカード番号なんか覚えてません。古いカードなんか 残してませーん。 終わった。 PayPalのシステムは腐

    tyru
    tyru 2011/11/08
  • 革命の日々! RubyKaigi2011で発表してきました

    あんまり発表ネタがなくて困ったのですが、なんとか30分もたせることができました。 濃い内容を期待していた人にはちょっと申し訳なかったです。

  • 革命の日々! CentOS on VMWare Player をインストールする

    最近挙動が不振だった手持ちのLinux Boxがとうとう逝ってしまわれた。 そういうわけで、VMWare なんぞに浮気してみた。 VMWareは現在、再生のみをサポートするVMWare Playerが無償公開されているが、いくつかのフリーソフトでVMの作成は出来てしまうので特に問題ないのである。 ただ、やってみるとこれが意外と色々なところで躓いてしまった。Web上には結構いろいろなサイトに情報が載っているのだが、殆どの記事がVMWare Player 公開直後に書かれたと思われる記事で、一部現状とあわないのである。 そういうわけで、全然目新しくもないVMWareのインストール記事を自分で書くことにしたわけ。 今回は以下の構成でインストールをおこなった。 HostOS: WindowsXP GuestOS: CentOS(Red Hat Enterprise Linux互換OS) Guest

  • 革命の日々! gihyo.jpの「ミラクルパッチ"にLinusも大喜び!Linuxカーネルを高速化させた233行のコード」の記事について

    なんかスラドのトピックが立っていたので、しばらくコメント読んでた。 元記事: http://gihyo.jp/admin/clip/01/linux_dt/201011/18 スラド: http://slashdot.jp/linux/article.pl?sid=10/11/21/0354238 なんか全然とんちんかんなコメントが結構あってSN比悪いね。 正直gihyoの記事はスラド家からパクってきたのが丸わかりで評価が低かったのだけれども、いい感じに誤解が誤解を生んでいるようだ。 誤解1: いままで誰も思いつかなかったミラクルなパッチである。ひゃっほー 誤解2: ttyのロックを減らすのに意味がある 誤解3: このパッチはWindowsがやっているようなフォアグラウンドアプリの優先度をブーストするパッチである ふはは これをミラクルパッチだと思ってる人はLKMLにはいないんじゃないか

  • 革命の日々! [quilt tips] diffに賢く関数名を表示させる方法

    diffに-pがついてなくて見にくい。という苦情に対してquiltでのtipsの欧州。 たしかにラベルを除くのは理にかなってる On Tue, 2010-10-19 at 12:47 +0200, Miklos Szeredi wrote: > On Tue, 19 Oct 2010, npiggin@kernel.d wrote: > > Index: linux-2.6/fs/fs-writeback.c > > =================================================================== > > --- linux-2.6.orig/fs/fs-writeback.c 2010-10-19 14:18:58.000000000 +1100 > > +++ linux-2.6/fs/fs-writeback.c 2010-10-

  • 革命の日々! [LKML名言集] BIOS書きってのは

    We do not trust BIOS tables, because BIOS writers are invariably totally incompetent crack-addicted monkeys. If they weren't, they wouldn't be BIOS writers. QED. And in fact the Apple problem is an _example_ of this BIOS writer incompetence, not some shining example of them doing something right. Linus 超訳: 僕らはBIOSテーブルを信頼してないよ。なぜってBIOS書きってヤツはいっつも パーペキ無能なコカイン中毒のサルなんだから。もしそうじゃなかったら 彼らはBIOS書きなんかにはならなか

  • 革命の日々! ハチクロはUnicodeの歴史を変えてしまったらしい

    togetterで「ISO/IEC JTC 1/SC 2/WG 2 ad hoc meetings: Emojiに関するTweets」がまとめられているようだ。 すばらしい。 → http://togetter.com/li/15979 と http://togetter.com/li/16108 一番面白かったのは「勝ち誇り」フェイス変更のくだりで この頭の左側のような「はぁ?なにこの鼻提灯」といった図面から 以下のような正しい鼻息に変更されたのだが そのときに使われた、日のマンガ文化の文脈で「勝ち誇り」がどのように抽象化されているのか という説明に使われたのが以下のコマだという 小形さんの多大なる貢献に経緯を表しつつ。そして同時に、森田先輩あなたって人は・・・・

  • 革命の日々! gcc の -fwrapv オプション

    gcc は -fwapvをつけないとオーバーフローが発生しないものと仮定して最適化をしてしまうようだ。 迷惑な。 http://bugzilla.kernel.org/show_bug.cgi?id=12597

  • 革命の日々! top(1)のSWAPフィールドは何を表示しているか

    top(1)でSWAP量を表示出来るんだけど、「あれー、カーネルにそんな機能なかったよなー」と不思議に思い実装を調べてみたら、 total_vm(= 仮想アドレス空間のサイズ) - rss というトンデモ計算式を使っていた。複数のプロセスで今日されてるページと、デマンドページングを無視している時点で近似値にすらなっていない。 実装したら、テストしようよ。公開する前に。

  • 革命の日々! マルチスレッドプログラムはforkしたらexecするまでの間はasync-signal-safe な関数しか呼んではいけない

    http://cvs.m17n.org/~akr/diary/2009-04.html#a2009_04_15 このへんの資料みながら。 SUSによると、マルチスレッドプログラムはforkしたあと、async-signal-safeオペレーションしか、しちゃダメということになっている。 特に glibc とかだと、規格を守らない奴がバカ。ってスタンスなので、libc 呼び出し中にforkしたらハングしても文句はいえない。 libc の中でmutex使っていけないというルールはないから。 http://www.opengroup.org/onlinepubs/009695399/functions/fork.html A process shall be created with a single thread. If a multi-threaded process calls fork(

  • 革命の日々! Java の closeDescriptors()

    kzk さんに教えてもらったネタ http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6336770 Javaは新しいプロセス作るときに、ファイルディスクリプタを全部閉じようとするけども、実装がバグっているのでデッドロックが起きる可能性があるそうだ。 てきとうに見つけたクロスリファレンスサイトから引用すると http://www.jiema.org/xref/openjdk/jdk7/jdk/src/solaris/native/java/lang/UNIXProcess_md.c#293 fork-and-exec処理の時のディスクリプタ全クローズ処理で、よりにもよってopendir()。ここでmalloc()が発生。あぼーん。 なんで、UNIX系OSってcloseall()システムコールがないんだろうね。困ったもんだ 追記: Linux

    tyru
    tyru 2009/09/17
  • 革命の日々! それは典型的な波ダッシュ問題ではあるまいか

    ま、波打ってる線には違いないから文句をいわれる筋合いはありませんな。 wikipediaの波ダッシュの項を見ると規格で逆向きが正しいんだ~みたいな事が書いてあるので調べてみると Unicode 3.0(ごめん最新版は持ってないの)の例示字体は確かに逆。 でもJIS X 221:1995(UnicodeのISO規格がISO10646でJIS X 221はその翻訳)ではチルダと同じ向きになっている。 JIS X 221はこの件に限らずUnicode Specificatonと細かなところが色々違うので油断できない。 はっはっは(笑い事じゃないんだけど) で、話を戻すと、WindowsフォントはUnicode式に逆向き表示。 なぜ、この逆向きっぷりが普段だれにも気づかれないかというと、Windows APIを使う限りにおいて、なぜか JIS X 208 WAVE DASH ←→ Unicode

  • 革命の日々! カーネル読書会で講演してきました

    7月にLMSで発表したglibc mallocの解説を、ブラッシュアップしてYLUG・カーネル読書会でも発表してきた。 人の知らない間にビデオ撮影をして、YouTubeにアップするとかいう話になっていたので、「ちょ・・業務用です・・・か??」とでも言わんばかり、かなり格的ビデオカメラが会場に設置されていた。 もうダメである。 緊張しまくり、用意しておいた小ネタギャグは一切言えなかった。 熱いトークを期待したいた皆さん(いるのか?)ごめんなさい。 てゆーか、ネクタイに指す、アナウンサー向けっぽげなマイクが用意されているあたりがYLUGスゴス。と思った。 まあ、それはさて置き、当日の感想としてはhyoshiokさんのBlogあたりの感想がよくまとまっていていい感じなのではないかと思う。 結論: みんなRubyが好きなんだよ。 kernel hackerもLL hackerも交流しようよ と

    tyru
    tyru 2009/05/04
    glibc mallocの解説らしい
  • 革命の日々! gccでpredefind されているマクロ一覧を得る方法

    以前、買えなかった~と書いた西田ですが、その後増版されていることを親切な人が教えてくださり、買えました。 Binary Hackの初心者向けの、ほぼ唯一といってもよい、すごくいいなので、OSとかlibcとかの低レベル層に興味があるひとは、ぜひ買っていただきたい1冊と思います。 で、ここで読者さまの物欲刺激用と自分向け備忘録をかねて このを読んで初めて知ったTipsを1つ。 cpp に -dM オプションを付けると predefined macro 一覧が得られる。 アーキ依存処理を入れたい時に限ってCPU毎のdefine名(__ia64__ とか)が思い出せないのはよくあることなので、これは便利だ。 つーか、man嫁。自分。とか思った。 $ cpp -dM /dev/null #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.

  • 1