タグ

2014年12月13日のブックマーク (12件)

  • Linuxカーネルで見る最適化の技 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の13日目です。 LWNのACCESS_ONCE() and compiler bugsを読んでなるほどねーと思ったのでその辺について書いてみたいと思います。 最適化の技と言いつつ実際は最適化させすぎない技なんですが\(^o^)/ まずACCESS_ONCEマクロの役割ですが、これは必ずデータを読みたいという場合に使ってます。 例えばこんなコードがあったときに(かなり適当ですが雰囲気は掴めるはず) while (1) { struct foobar *p = foo; if (p->hoge) { .... } } コンパイラはこのように最適化をかけてくる可能性があるんだけど、fooは別のスレッドによって変更されるのでループ毎にデータをfetchして欲してというケースで使うのがACCESS_ONCEマクロみたいです。 struc

    Linuxカーネルで見る最適化の技 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • C言語で可変長引数をとる関数を、型安全に書く方法

    C言語の可変長引数は、型安全でない(まちがった型の引数を渡してもコンパイルエラーにならない)とされています。これは言語仕様の理解としては正しいのですが、特定の型の引数を任意の個数とる関数に限っては、マクロを使うことで型安全性を確保することができます。 任意の個数のdoubleを引数にとり、その和を返す関数「sumf」を例にあげて説明します。 C言語の可変長引数機構を使ってsumfを定義すると、以下のようになります。 #include <math.h> #include <stdarg.h> #include <stdio.h> static double sumf(double nfirst, ...) { double r = 0, n; va_list args; va_start(args, nfirst); for (n = nfirst; ! isnan(n); n = va_a

    y_uuki
    y_uuki 2014/12/13
  • PostgreSQL のパフォーマンスチューニング - Qiita

    PostgreSQL Advent Calendar 2014 の 13日目です。 Advent Calendar を今年もやってみたいと思って、枠が空いていたので飛び込んでみました。 昨日は osapon さんの libpqxx を使ってみたでした。 概要 PostgreSQL のパフォーマンスチューニングは大きく下記に分かれます。 システムチューニング SQL チューニング ここでは Linux 上で動かしていることを前提に、それぞれ説明します。 システムチューニング システムチューニングの概要 システムチューニングとは、OS または PostgreSQL の設定を変更することです。 それぞれ順に説明します。 OS チューニング PostgreSQL では特にメモリ関連でOSパラメータを設定変更すると、高速化効果が得られます。 特に下記のカーネルパラメータに注意します。 vm.dirt

    PostgreSQL のパフォーマンスチューニング - Qiita
  • 分散コンピューティングの落とし穴 - Wikipedia

    分散コンピューティングの落とし穴(ぶんさんコンピューティングのおとしあな)は、サン・マイクロシステムズのピーター・ドイチュらが提唱した、初めて分散アプリケーションを開発するプログラマが想定してしまいがちな、誤った前提を集めたものである[1]。 落とし穴[編集] 落とし穴として挙げられているのは、以下の8つである。 ネットワークは信頼できる。 レイテンシはゼロである。 帯域幅は無限である。 ネットワークはセキュアである。 ネットワーク構成は変化せず一定である。 管理者は1人である。 トランスポートコストはゼロである。 ネットワークは均質である。 経緯[編集] これらの落とし穴のリストはサン・マイクロシステムズ社に端を発している。1994年にサンのフェローの最初期メンバーの1人、ピーター・ドイチュが最初の7項目を執筆したとされている。しかし、ビル・ジョイとトム・ライオンが既に最初の4つを「ネッ

  • Notes on Distributed Systems for Young Bloods – Something Similar

    I’ve been thinking about the lessons distributed systems engineers learn on the job. A great deal of our instruction is through scars made by mistakes made in production traffic. These scars are useful reminders, sure, but it’d be better to have more engineers with the full count of their fingers. New systems engineers will find the Fallacies of Distributed Computing and the CAP theorem as part of

  • Best Practices for On-Call and Incident Response

    30+ capabilities, 750+ integrations, the power of AI, all together.

    Best Practices for On-Call and Incident Response
  • Dockerでdebianプラクティス - Qiita

    諸元 とはいっても以下のサイトの情報をベースにまとめただけ。 http://d.hatena.ne.jp/mainyaa/20140203/p1 https://index.docker.io/u/flox/debian-openerp/ 実績 一応、動作の確認はできました。 これの応用したものを後で出す予定。 ただ、ビルドで変なログがあるので、よくないことやってるかも(debian的に)。 やっていること ベースイメージ メンテナー ミラー(CDNからどこでもミラー) noninteractive ロケール --no-install-recommends の例示 git キャッシュ削除 ベースイメージ (セミ)オフィシャルから。 メンテナー ちゃんと入れましょう。 ロケール この設定でいいかは一寸微妙です。(そのままもってきてあるだけ) noninteractive ENVとRUN ex

    Dockerでdebianプラクティス - Qiita
  • ペパボ新卒エンジニア研修 後編

    前回、ペパボ新卒エンジニア研修のアプリケーションサイドについて、2013年の振り返りに合わせて紹介した。 今回はその後編にあたるオペレーションサイドの研修について紹介しようと思う。 Ops研修 エンジニア研修オペレーションサイドの内容を説明するのはカンタンだ。 Rails Tutorialで作成したTwitter風Webアプリケーションは、これまでHerokuやSqaleで動かしていた。 今度はそれを、minimalなOSの入ったサーバを用意し、環境を構築し、デプロイする。 production環境を自分で作り上げる。 自ら作り上げたサービスを自ら運営してみせるのが、この2ヶ月に渡り実施されたエンジニア研修の大目的だったと思う。 maglica 社内にはmaglicaによって構築されたinternal cloud環境がある。 社内ネットワークにVMを好きなだけ(といってもストレージに限界は

    y_uuki
    y_uuki 2014/12/13
    なるほど〜
  • MySQL Casual Talks vol.7でMySQL 4.0について発表してきた

    MySQL Casual Talks vol.7にて、「MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話」のいうタイトルで発表して参りました。 内容はタイトル通りで、よぼよぼのMySQL 4.0サーバをリプレイスしてバージョンアップするまでに出会った困難とそれをどう乗り越えたか、みたいな話をしてきました。 謝辞 何も知らなかった自分がここまで来れたのは、ひとえにhetemlチームの皆さんあってこそです。 ペパボに新卒エンジニアとして入社して以来、初めて私が中心となって進めた大きな仕事でした。 特に@tnmtさん、@glidenoteさん、@hibomaさん、@lamanotramaさん、gyugyuさん、@hypermktさんらのアドバイス・サポートが無ければ達成することは無かったと思います。 サービスを止めなければならない大規模なメンテナンスに対して、カッ

    y_uuki
    y_uuki 2014/12/13
    やばい。社内にMySQL 4 あるけど、一切触れようとしてない
  • インタフェースの実装パターン #golang - Qiita

    はじめに この記事は,以下の過去にQiitaに投稿したインタフェースの実装パターンの記事に,typeやメソッド,インタフェースの基的な説明を追加してわかりやすくしたものです. Go言語における埋め込みによるインタフェースの部分実装パターン structにinterfaceを埋め込んで,動的に入れ替えるパターン まずtypeとメソッド,基的なインタフェースの実装方法についておさらいすることで,さまざまなインタフェースの実装パターンを扱う準備をしましょう. typeで型を宣言する まずはじめに,Go言語における型の宣言方法をおさらいします.Go言語をはじめたばかりの方の中に,typeの使い方を限定的にしか理解していない方をよく見かけます.ご存知のとおり,typeは型を宣言するために使うキーワードです.以下のように,構造体型やインタフェース型の宣言の際に,使用することが多いでしょう. //

    インタフェースの実装パターン #golang - Qiita
  • Distributed systems theory for the distributed systems engineer | Paper Trail

  • mod_mrubyとngx_mrubyの最新のアーキテクチャとリファレンス公開(まだまだAdvent Calendar募集中です) - 人間とウェブの未来

    この記事は、mod_mruby ngx_mruby Advent Calendar 1日目の記事になります。 現在既に13日分が登録されており非常に楽しみです。といっても、まだ12日分空いていますので今もなお募集中でございます!是非是非ご登録を! 今日は1日目なので、mod_mrubyとngx_mrubyの最新のアーキテクチャとリファレンス公開ということで、2014年11月に情報処理学会のジャーナルに採録され公開されたmod_mrubyの元になるアーキテクチャの論文を下記のリンクからPDFで無料で公開します。どうぞ皆さんタブレットにPDFを保存したり印刷したりして読んでみてください。謝辞には馴染みの方々のお名前を書かせていただきました。 最新のアーキテクチャ論文 論文 [pdfダウンロード] mod_mruby:スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡張支援機構 ス

    mod_mrubyとngx_mrubyの最新のアーキテクチャとリファレンス公開(まだまだAdvent Calendar募集中です) - 人間とウェブの未来
    y_uuki
    y_uuki 2014/12/13