タグ

2014年8月10日のブックマーク (6件)

  • How TCP backlog works in Linux

    When an application puts a socket into LISTEN state using the listen syscall, it needs to specify a backlog for that socket. The backlog is usually described as the limit for the queue of incoming connections. Because of the 3-way handshake used by TCP, an incoming connection goes through an intermediate state SYN RECEIVED before it reaches the ESTABLISHED state and can be returned by the accept s

    hiboma
    hiboma 2014/08/10
    "a SYN queue with a size specified by a system wide setting and an accept queue with a size specified by the application." nrhd
  • 相手がいないのに ESTABLISHED になってる TCP ポート - tmtms のメモ

    最近 ParallelServer というライブラリを作ったのですが、その最中に奇妙な状態になってる TCP ポートを見つけたので、メモっておきます。 Ruby では TCP サーバーは次のような感じで作ることができます。お手軽ですね。 require 'socket' Socket.tcp_server_loop(12345) do |socket, client_addr| socket.puts "Your IP address: #{client_addr.ip_address}" name = socket.gets socket.puts "Hello, #{name}" socket.close end これは 12345 ポートでクライアントからの接続を待ち、接続されたらクライアントのIPアドレスとクライアントからの入力をクライアントに送信して切断するだけの簡単なプログラム

    相手がいないのに ESTABLISHED になってる TCP ポート - tmtms のメモ
  • 1冊の技術書と青春18切符を持って一人旅してきた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 (画像が多いので、一旦データを全て読み込んでからブログエントリを読み始めた方が良いかもしれません…) http://instagram.com/p/rgfgD4I7VE/ 「ちょっと明日から1人でLinuxの旅に行ってくる」エントリに書いた通り、先週Linuxプログラミングインタフェースというとっても重たい技術書と青春18切符と最低限の着替えを持って、北海道目指して鈍行や快速を乗り継ぎ、技術書を電車の中でひたすら読む1人旅をしてきました。 オライリーLinuxの三大凶器(自社調べ)を比較してみたらカーネルが一番 "薄い"のだな pic.twitter.com/SM26NKSiqh — hiroya ito (@hiboma) August

    1冊の技術書と青春18切符を持って一人旅してきた
    hiboma
    hiboma 2014/08/10
    薄い方でやろうかな
  • GCCの組込みアトミック命令の使い方 | Everyday Deadlock

    ちょっと使うことがあったので、備忘録的にGCCの組込みアトミック命令の使い方についてまとめておきます。 前提知識 マルチスレッドプログラムにおいて、共有データを更新する際の定石は spin lock や mutex でデータを保護することです。 これらの道具は多くの場面において十分便利なのですが、例えば共有データが1個の int 変数のみであり、更に高頻度で更新が行われるといった場合にはやや同期のコストが高くついてしまいます。 そのような場合には、アトミック命令を用いることで同期オーバーヘッドを抑えることができます。 アトミック命令とは、複数のスレッドから実行されても、個々の命令が一つ一つ順番に適用されてゆくことが保証されている命令のことです。 (より正確には、個々の命令がとある順番で一つ一つ適用された時と同じ結果を得られることが保証されている命令のことです) 例えば、とある変数 X の値

    hiboma
    hiboma 2014/08/10
    __sync_fetch_and_add 等々
  • ACCESS_ONCE() - サトルサトラレ

    ACCESS_ONCE()の使い道というか名前の由来がよく分からんかったから調べてみた。 とりあえず、ソースコードには下記コメントがある。 include/linux/compiler.h /* * Prevent the compiler from merging or refetching accesses. The compiler * is also forbidden from reordering successive instances of ACCESS_ONCE(), * but only when the compiler is aware of some particular ordering. One way * to make the compiler aware of ordering is to put the two invocations of * ACC

    ACCESS_ONCE() - サトルサトラレ
    hiboma
    hiboma 2014/08/10
  • https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook-e1.pdf