タグ

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

  • 革命の日々! メッセージペディアのpage allocation failureの説明

    http://ossmpedia.org/messages/linux/2.6.9-34.EL/482.ja 物理ページの確保に失敗した。要求したサイズと確保時に指定した空きページの探索方法を表示する。 物理メモリが不足している場合に発生する。また,空きメモリが充分であっても,物理メモリが断片化し要求サイズ分の物理ページが連続して確保できない場合は発生する。 うーむ、この説明だと普通のときは出ないメッセージであるかのように書いてあるが、んなこたーない。 ネットワーク系のドライバだとパケット受け取った時に、そのデータを格納する用のメモリ確保を行うことが多いのだが、そのときに使われる関数 netdev_alloc_skb() は __GFP_NOWARN を立てない。 かつ、Linuxはメモリ管理哲学としてぎりぎりまでメモリを開放せずにキャッシュとして使い続け、メモリ確保要求が来てから開放する

    meech
    meech 2017/06/08
  • 革命の日々! [patch 00/54] [Announce] Microsoft Hyper-V drivers for Linux

    話題のHyper-VのLinux contributionですが、LKMLにはGregKHが対応しているみたい。ということはmainline入りがほぼ確実だね。 たぶん、MS - Suseラインでなにか取引があったんでしょう。きっと Hi all, I'm happy to announce, that after many months of discussions, Microsoft has released their Hyper-V Linux drivers under the GPLv2. Following this message, will be the patches that add the drivers to the drivers/staging/ tree, and a whole bunch of cleanups. It's taken a long r

    meech
    meech 2016/07/28
  • 革命の日々! glibcのpthread_cancel()はC++と一緒に使うと予想外の動きをする事がある

    http://udrepper.livejournal.com/21541.html Ulrichがpthread_cancel()とC++は混ぜるなキケンになってるけど、オレは正しいんだ正しいんだ正しいんだ。 という趣旨のブログを書いております。 以下いつものように(主に笑いをとるための)超訳。正確な情報が欲しい人は元URLを読んでくださいませ。 #include <cstdlib> #include <iostream> #include <pthread.h> static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t c = PTHREAD_COND_INITIALIZER; static void *tf (void *) { try { ::pthread_mutex_lock(&m);

    meech
    meech 2014/04/17
  • 革命の日々! O_TMPFILE

    Linux 3.11で O_TMPFILEがマージされた。O_TMPFILEとはなにか。このオプションは2つの効果をもたらす。 1つめ。 linkat(2)にはセキュリティ的に問題があり、一時ファイルが作られてからunlinkされるまでの隙間に、/proc/fd/ に対して linkat(AT_SYMLINK_FOLLOW) することで、一時ファイルのパス名が分からなくてもリンクを貼ることが出来た。 これに関して、もし、linkat(AT_SYMLINK_FOLLOW)のoldpath引数のファイルが、O_TMPFILE | O_CREAT | O_EXCL の組み合わせでオープンされていたら、ENOENTで失敗するハックの追加 2つめ。 VFS層にインターフェースが追加され、各ファイルシステムにtmpfile専用のメソッドが呼ばれるようになった。O_TMPFILEがついた場合は、ファイル

    meech
    meech 2013/07/23
  • 革命の日々! Rubyで学ぶx86_64 ABI

    ひさしぶりにプログラミングの話題でも。 現在のRubyのtrunkをx86_64上のFedora12でmake test-allすると8個ぐらいテストが失敗するのだが、その中の1つにこういうエラーがある 1) Failure: test_sin(DL::TestDL) [/home/kosaki/linux/ruby/test/dl/test_dl2.rb:95]: <1.0> expected but was <1.38523885234213e-309>. test/dl/test_dl2.rbというのが、なにをしているテストかというと、ようするに以下のようにdlモジュールを使ってlibmのsin関数を呼んでいるわけだ module DL class TestDL < TestBase # TODO: refactor test repetition def test_sin() pi

    meech
    meech 2013/07/19
  • 革命の日々! シーケンスロック その5 volatileがダメな理由

    どもども。またまた間隔があいてしまいましたがシーケンスロックな話しの続きです。 前回の記事で坩堝さんから面白い指摘をうけたので今回は予定を変更してvolatileの話をしたいと思います。 retをvolatileにするだけではうまくいかないんですよね? どういう風になるんだろ. なるほど、たしかに世のC言語の参考書を見るとvolatileはある種の最適化を妨げる効果を持つと されています。 これだけ見ると、volatileとつけるだけすべての最適化が無効になってうまく動きそうですね。 しかし、その理屈は微妙におかしいのである 多くの人が「ある種の」という言葉を拡大解釈しているがvolatileは来スレッド同期に使えるようなシロモノではないのである。 つづきは、続きを読むからご覧ください。 あと、お願い。 今回の話は前提知識がいろいろとあるので、末尾のご参考にあげたURLを読んでから 読ん

    meech
    meech 2012/09/08
  • 革命の日々! シーケンスロック その4(コンパイラの野望を打ち砕け!)

    引きだけで終わってしまった前回のつづきです。 最近2件つづけて「トイレ スピンロック」というキーワードでうちのサイトにやってきた人がいました。 どうやらLinuxでロック=トイレという常識は予想以上に広まっているようです。 赤レンジャーも負けてはいられません(マテ さて、今回からいよいよ rmb(), wmb() の謎に迫っていくわけであるが、そもそも、なぜにこげなモノが必要なのだろう? Why? それは、プログラムは人間が書いた順番では動かないからである。 プログラムは決して思ったとおりには動かない――― 書いたとおりには動くけど。 -- 詠み人不明 という古の格言を無視するような発言であるが、これは一面において事実である。 なぜなら、コンパイラには最適化、CPUにはアウトオブオーダ実行というものがあるからだ。 これが普段問題にならないのは、ソースコードに書いた順番に実行したときと異なる

    meech
    meech 2012/09/07
  • 革命の日々! シーケンスロック その1

    3/13 ある人から文章指導をたくさんいただきました。 初版から細かいところの表現が結構変わってます。 でも内容は変わってません。 文章へたくそですいません。 ---- どうも管理人です。 ひらメソッドで有名なひらさんの スピンロックから始めるLinuxカーネル入門 を読んでいて感動したので僕もなにか書こうかと思い、今回はシーケンスロックです。 シーケンスロックってのはスピンロックと同じく、カーネル内部で使われるロックで、ユーザーからは見えません。 カーネルは1クロックでも速く動いてほしいとみんなが思っているので、状況に応じて色々なロックが使われていますが、スピンロックやらシーケンスロックってのは、そのロックの種類のことです。 しかしひらさんは凄い。 技術的な解説を技術屋に分かるように説明するだけでもたいしたモノだといわれるこのご時世に ちゃんとお笑いまで仕込んであるんですから。 書いてあ

    meech
    meech 2012/09/02
  • 革命の日々! ハチクロは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 一番面白かったのは「勝ち誇り」フェイス変更のくだりで この頭の左側のような「はぁ?なにこの鼻提灯」といった図面から 以下のような正しい鼻息に変更されたのだが そのときに使われた、日のマンガ文化の文脈で「勝ち誇り」がどのように抽象化されているのか という説明に使われたのが以下のコマだという 小形さんの多大なる貢献に経緯を表しつつ。そして同時に、森田先輩あなたって人は・・・・

  • 革命の日々! 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)とかで確認

    meech
    meech 2012/03/06
  • 革命の日々! gcc split stack

    Twitterに書いたけど、こういうネタはBlogに書くべきだった。再投稿 gccがstackの自動伸長のサポートを計画しているらしい。コンパイラがケアしてくれるならスタックが連続している必要はないからスタックの初期値をすごく小さく出来て32bit CPUでたくさんFiberがつくれるとかいう話っぽい http://gcc.gnu.org/wiki/SplitStacks

    meech
    meech 2012/02/07
  • 革命の日々! gcc 4.7 だとカーネルがまともに動かないんじゃないの?という話

    Jan Karaがなかなか素敵なバグを報告している。 bitfieldいじるときに、64bit load/store使えうように、となりのbitfieldも合わせて read-modify-write するから全然関係ないフィールド更新時に別のフィールドがlostするって・・・ でいつものようにGCC界隈から「Cの規格書にはやっちゃダメとは書いてない」という声が飛んできて カーネル界隈から「そんなんソフトが書けるか。あほー」という怒号が飛び交う展開に だって、普通たまたま隣り合ってるだけの全然関係ないフィールドってロックも別だよねえ(-_-;) From: Jan Kara jack@suse.cz vger.kernel.org To: LKML Cc: linux-ia64@vger.kernel.org, Linus Torvalds , dsterba@suse.cz, ptesa

    meech
    meech 2012/02/02
  • 革命の日々! Use tglx's more complete linux-history tree

    search_binary_handler() で何も考えずに set_fs(USER_DS); してるから init起動するときに、最初のパスに目的の実行ファイルがないとその後トチ狂った状態に 突入してしまうぜ-。2.6.12にはすでに存在してるバグだぜーとか議論している んで、Andrew Morton が bitkeeperからimport した treeは色々コミットが混ざってて ログが見にくくてしかたがないとか愚痴ってるとLinusが颯爽と登場。 「tglxのlinux-history treeを使えよ。」とか言い出すわけだ。 おいおい、いつの間にそんなの出来たんだよ。 しかし、これは便利 From: Linus Torvalds <torvalds@linux-foundation.org> Date: Tue, 7 Jun 2011 19:00:24 -0700 Messag

    meech
    meech 2011/06/12
  • 革命の日々! RHEL6 S390用チューニングパラメタ推奨値解説

    RHEL6のドキュメントページ(※)みてたのだけど ※ http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/ Technical Notes: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/Technical_Notes/index.html に面白いチューニングパラメタの記述をみつけたので解説してみる。S390向けのチューニング推奨値の部分だ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー System z Performance Some of the default tunables in Red Hat Enterprise Linux 6 are curr

    meech
    meech 2011/04/13
  • 革命の日々! IO-less throttling problem statement

    Jan Kara が書いた IO-less dirty throttleのまとめ 忘れそうになるから、はっとく Hi, below is my summary of problems observed with current throttling scheme. I guess other guys will have some changes but this I what I remembered from top of my head. Honza --- The problems people see with current balance_dirty_pages() implementation: a) IO submission from several processes in parallel causes suboptimal IO patterns in some

    meech
    meech 2011/04/13
  • 革命の日々! 今年のLSFの参加者リストみながら雑感

    LinusとAndrew Mortonの両方が参加って珍しいなー Googleふえたなー Intelみあたらないけど、intel.comのメアドを使ってない人がいるから、隠れがいそうだ Mattew Willcoxとかドメイン wil.cx だもんな。cxってどこだよ たぶん企業別だとまだredhatが一位っぽげ 日からだと NTT 2 Fujitsu 2 の4名か。日立とNECはメモリとストレージの両方に興味がないと。ふむふむ

    meech
    meech 2011/03/25
  • 革命の日々! [tips] 最近のpidstatはIO accountingにも対応しているらしい

    ソース http://sebastien.godard.pagesperso-orange.fr/man_pidstat.html 以下のような感じで出力してくれる。iotop -b -n1 とやるのとどちらが使いやすいかはケースバイケースだろう。 % LANG=C pidstat -d Linux 2.6.35.11-83.fc14.x86_64 (kosaopt) 02/21/11 _x86_64_ (4 CPU) 03:42:09 PID kB_rd/s kB_wr/s kB_ccwr/s Command 03:42:09 1 28.37 53.79 1.00 init 03:42:09 443 0.00 0.41 0.00 jbd2/dm-0-8 03:42:09 497 0.56 0.00 0.00 udevd 03:42:09 963 0.00 0.00 0.00 jbd2/s

    meech
    meech 2011/02/21
  • 革命の日々! GNU GLOBAL (gtags) を Ruby対応させてみる

    この記事は カーネル/VM Advent Calendar : ATND のために書かれました。 カーネルネタとか思いつかなかったので、今日はGNU GLOBALの話をするよっ。 このGLOBALさん、emacsからのタグジャンプがetagsより賢いのがお気に入りで(特に同名関数がたくさんあるばあい、etags.elは問答無用で最初にマッチした関数にジャンプするので全然役に立たない)長いこと愛用してる。 で、最近困ってたのがrubyの開発しててrubyとC言語を行ったり来たりするので、ruby上でついいつものクセでC-. とか押して「イラッ」とかしてた。だってもうクセになってるんだもん で、ソース見たら案外拡張が簡単そうだったのでさくっと対応してみた。2時間いらなかったんじゃないかな。調査時間含めても。いや、まじめにやるとRubyの構文解析は死ねるんだけど、なにせ今がgrepでしのいでいる

    meech
    meech 2011/02/04
  • 革命の日々! daemonについて

    Rubyのconfigure.inには以下のように、*BSD以外は強制的にdaemon(3)がないと判定させる あやしげなロジックがある。 dnl Checks for libraries. AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no]) gitで履歴をしらべると、元々Mac OS X だけが腐ってる扱いだったのだが、 後に一般化されている。困ったことに理由はまったく記載されていない。 それをいったら元々のMacOS X が腐ってるという扱いにした理由も書いてないんだけど。 さて、当かどうか分からないがある人から、Linuxのdaemon(3)は来二回 forkが必要なところを一回しかforkしてないので腐ってる。それが原因ではないか と教えて貰った https://www.codeblog.or

    meech
    meech 2011/01/24
  • 革命の日々! Cross compilers available on kernel.org

    ふーん Date: Thu, 25 Nov 2010 11:02:04 +1100 From: Tony Breeds To: Linux Kernel ML Cc: Mikael Pettersson , Rabin Vincent , =?utf-8?B?TcOlbnMgUnVsbGfDpXJk?= , linux-arm-kernel@lists.infradead.org Subject: Cross compilers available on kernel.org Hi All, I've just added 4.4.5 and 4.5.1 hosted on i686 and x86_64 to: http://kernel.org/pub/tools/crosstool/files/bin/ These compilers do not have libc support

  • 1