Sunday, October 30, 2016

mmapを使ってファイルベースの巨大なバッファを確保する話

小さなバッファはインメモリでもつが、メモリに収まらないような大きなバッファはテンポラリファイルを作り、file I/Oでアクセスする、というのが昔からの汎用的なバッファ実装のアプローチ。

だが、バッファに格納するデータ量によってアクセス手段を変えるというのはめんどくさいし、そこを抽象化すると無駄なオーバーヘッドが発生する。

幸いなことに最近は、メモリ空間が広い 64bit CPU だけ考えればいい。なので、ファイルの「読み込み」については、めんどくさいから全部mmapするというのが一般的なアプローチになってきている(例: LLVMのリンカであるlld)。

同様のことが、テンポラリファイルを使う可変長のバッファについても可能であり、h2o では実際に実装している。詳しくは h2o_buffer_reserve 関数の実装を見てもらえばいいと思いますが、ざっくりとした手順は以下のとおり:

▪️バッファ作成もしくはリサイズ処理:
  1. テンポラリファイルを作り、すぐ消す(作成の場合のみ。mkstemp, unlink してから file descriptor を使い続ける)
  2. サイズを設定する(posix_fallocate もしくは ftruncate)
  3. 旧来のマップされた領域を munmap する(リサイズの場合のみ)
  4. 全体を mmap する
▪️解放処理:
  1. munmap して close する

Windowsなら、ファイルを消すのを解放時にする必要があるかも。

41 comments:

  1. Windows は FILE_DELETE_ON_CLOSE フラグを設定しておくのかな。クローズすると自動削除。

    ReplyDelete
  2. Windowsの_openなら_O_SHORT_LIVEDや_O_TEMPORARYが、Linux 3.11以降のopen(2)ならO_TMPFILEがありますね
    https://msdn.microsoft.com/library/z0kc8e3z.aspx

    ReplyDelete
  3. I understand what you bring it very meaningful and useful, thanks.

    five nights at freddy's 5  |run 3 |

    ReplyDelete
  4. The blog or and best that is extremely useful to keep I can share the ideas of the future as this is really what I was looking for, I am very comfortable and pleased to come here. Thank you very much.
    animal jam | five nights at freddy's | hotmail login

    ReplyDelete
  5. Objek wisata gunung bromo menjadi primadonya jawa timur karena wisata ini memang sangat fenomenal di kalangan para wisatawan. Banyak para pengunjung yang datang dari luar negeri untuk menikmati keindahan alam di wisata gunung bromo. Hamparan pasir yang luas dan dinginnya hawa pagi di wisata gunung bromo menambah keseruan saat berlibur ke wisata gunung bromo jawa timur tersebut.
    Pelayanan jasa sewa mobil malang murah sangat diburu oleh para wisatawan yang sedang berlibur di kota malang batu. Jasa sewa mobil murah malang ini bisa menjadi ladang bisnis yang menggiurkan, karena mengingat banyak para wisatawan yang datang dari luar membutuhkan transportasi sewa mobil malang murah. Beragam pilihan paket sewa mobil malang murah dan juga bermacam-macam tipe mobil yang disediakan oleh sewa mobil malang batu murah. Informasi pemesanan dan booking online sewa mobil malang murah baca halaman lengkap.
    Racikan ampuh jamu kuat dan tahan lama yang dapat dengan mudah mengatasi masalah ejakulasi dini adalah dengan memakai ramuan herbal madura. Obat kuat yang berasal dari madura sangat populer di kalangan pria yang menginginkan hubungan seksual tahan lama agar bisa menikmati kenikmatan saat berhubungan intim tersebut. Jamu tahan lama seksual ini diolah menggunakan bahan-bahan tradisional dan sudah terdaftar resmi di badan kesehatan republik indonesia. Jadi anda tidak perlu khawatir saat mengkonsumsi jamu kuat alami dari madura ini, tidak ada dampak negatif sedikitpun bagi kesehatan tubuh. artikel terkait . Harga jual jamu kuat dan tahan lama produksi ramuan madura asli obat kuat tahan lama.

    ReplyDelete

  6. The share your really gives us excitement. Thanks for your sharing. If you feel tired at work or study try to participate in our games to bring the most exciting feeling. Thank you!
    hotmail sign in | red ball | 192.168.1.1

    ReplyDelete
  7. Thank you! I hope you have many useful articles to share with everyone!
    slither io

    ReplyDelete
  8. Interesting article! Thank you for sharing them! I hope you will continue to have similar posts to share with everyone! I believe a lot of people will be surprised to read this article!
    abcya

    ReplyDelete
  9. Thanks for your post! Through your pen I found the problem up interesting! I believe there are many other people who are interested in them just like me! Thank you for sharing them with everyone!
    fb login

    ReplyDelete
  10. Thanks for your post! I believe there are many who feel the same satisfaction as I read this article! I hope you will continue to have such articles to share with everyone!
    happy wheels

    ReplyDelete
  11. Thank you for sharing the post. It's nice to know.
    instagram online

    ReplyDelete
  12. Harga rak sepatu gantung yang dijual secara online yaitu Rp.75.000 per pcs. Namun berbeda dengan produsen RakGantung.com yang menjual produk organizer rak sepatu gantu g dengan harga 65.000 rupiah saja. Lebih murah bukan? Dan jika anda membeli dengan pembelian minimal 3 pcs (reseller) maka akan mendapatkan diskon khusus. Apalagi pembelian rak sepatu gantung dengan jumlah minimal 1 lusin dan minimal 100 pcs. Anda akan mendapatkan super diskon. Sampai saat ini masih dicari reseller, agen dan distributor yang siap bekerja sama memasarkan produk organizer ini. Silahkan anda bandingkan sendiri harga rak sepatu gantung resleting di tempat kami dengan produsen lainnya. Kualitas bahan yang digunakan untuk membuat rak sepatu gantung karakter ini merupakan yang terbaik. Pesan rak sepatu gantung kepada kami sekarang juga.

    ReplyDelete
  13. Sifatnya sulit untuk dibengkokkan, dilas, dipotong. Penggunaan:Pabrik Plat Kapal Bki Krakatau Steel
    Toko Besi Siku Baja
    Supplier besi siku baja
    Pabrik besi beton bjku
    Toko pipa besi
    Toko pipa besi0,30 % – 0,40 % C : connecting rods, crank pins, axles.

    ReplyDelete
  14. Harga rak sepatu gantung karakter di tokopedia atau di website lainnya hanya 65.000 rupiah saja. Produk rak sepatu gantung karakter ini merupakan tempat sepatu paling favorit pembeli, terutama rak sepatu gantung karakter hello kitty dan doraemon. Hampir setiap hari selalu ada konsumen yang pesan rak sepatu gantung karakter kartun hello kitty tersebut. Perpaduan warna pink pada rak sepatu gantung hello kitty tersebut memang membikin pembeli tertarik. Rak sepatu gantung karakter hello kitty lihat produk disini.

    ReplyDelete

  15. شركة نقل عفش
    اهم شركات مكافحة حشرات بالخبر كذلك معرض اهم شركة مكافحة حشرات بالدمام والخبر والجبيل والخبر والاحساء والقطيف كذلك شركة رش حشرات بالدمام ومكافحة الحشرات بالخبر
    شركة مكافحة حشرات بالدمام
    شركة تنظيف خزانات بجدة الجوهرة من افضل شركات تنظيف الخزانات بجدة حيث ان تنظيف خزانات بجدة يحتاج الى مهارة فى كيفية غسيل وتنظيف الخزانات الكبيرة والصغيرة بجدة على ايدى متخصصين فى تنظيف الخزانات بجدة
    شركة تنظيف خزانات بجدة
    شركة كشف تسربات المياه بالدمام
    شركة نقل عفش واثاث

    ReplyDelete
  16. The article you have shared here very good. This is really interesting information for me. Thanks for sharing!
    hotmail.com login |hotmail log out |gmail login

    ReplyDelete
  17. This comment has been removed by the author.

    ReplyDelete
  18. I am so happy to read this. This is the kind of manual that needs to be given and not the random misinformation that’s at the other blogs.
    gmail sign up | hotmail sign up

    ReplyDelete
  19. I love all the posts, I really enjoyed, I would like more information about this, because it is very nice. Thanks for sharing. cara menurunkan leukosit yang tinggi

    ReplyDelete
  20. If you want to Fastest Car In The World. you can visit listforever.com here you will get Top 30 Fastest Cars In The World | Pictures, Price and Specifications

    ReplyDelete
  21. Things are very open and intensely clear explanation of issues. It was truly information. Your website is very beneficial. Click link sims 4 mods to visit my site that will help you having a virtual world as the same as your real world you living.

    ReplyDelete
  22. Webroot.com/safe is a protection software solution that communicates with the cloud avoiding the hassle to manage the signature updates to deploy. for office setup visit office.com/setup

    ReplyDelete
  23. This article is great. I like it very much. Thank you.
    โปรโมชั่นGclub ของทางทีมงานตอนนี้แจกฟรีโบนัส 50%
    เพียงแค่คุณสมัคร Gclub กับทางทีมงานของเราเพียงเท่านั้น
    ร่วมมาเป็นส่วนหนึ่งกับเว็บไซต์คาสิโนออนไลน์ของเราได้เลยค่ะ
    สมัครสล็อตออนไลน์ >>> goldenslot
    สนใจร่วมลงทุนกับเรา สมัครเอเย่น Gclub คลิ๊กได้เลย

    ReplyDelete
  24. Thank you for making me realize this. It's great.
    เว็บไซต์คาสิโนออนไลน์ที่ได้คุณภาพอับดับ 1 ของประเทศ
    เป็นเว็บไซต์การพนันออนไลน์ที่มีคนมา สมัคร Gclub Royal1688
    และยังมีหวยให้คุณได้เล่น สมัครหวยออนไลน์ ได้เลย
    สมัครสมาชิกที่นี่ >>> Gclub Royal1688
    ร่วมลงทุนสมัครเอเย่นคาสิโนกับทีมงานของเราได้เลย

    ReplyDelete
  25. You can leave all the stressful work to us so that we handle it for you and assure you of delivering excellent online Affordable Writing Services to you all the time in our research papers 247 company.

    ReplyDelete

Note: Only a member of this blog may post a comment.