IO-less Dirty Throttling.pdf

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IO-less Dirty Throttling

IO-less Dirty Throttling Fengguang Wu fengguang.wu@ LINUXCON JAPAN 2012 Write and writeback USER APPLICATION KERNEL FLUSHER THREAD ================== ===================== dirty pages and writeout pages after immediately return dirty expired (30s) avoid blocking apps aggregate write IO The flusher thread(s) Initiate writeback IO in background One flusher per storage device . . $ ps ax PID TTY STAT TIME COMMAND 2322 ? S 0:01 [flush-8:0] 12681 ? S 0:00 [flush-btrfs-1] Dirty throttling To limit dirty pages.. by slowing down heavy dirtiers. IO-full balance_dirty_pages() sys_write() balance_dirty_pages() i f (over_bground_thresh()) start_background_writeback(); i f (dirty exceeded) writeback_inodes(pages_dirtied * 3/2); Problem: disk seeks + lock contentions flusher task 1 task 2 task 3 *************** concurrently working on **************** ++ ++ ++ ++ | | | | | | | | | | | | | | | | | | | | | | | | | inode 1 | | inode 2 | | inode 3 | | inode 4 | | | | | | | | | | | | | | | | | || || || || ++ ++ ++ ++ disk seeks small IO lock contentions cache bouncing Problem: large latencies tasks in deep IO path are not killable hurts responsiveness hurts throughput (pipeline stalls) . . loop { READ from net WRITE to disk # long sleeps = idle network } rsync to a loaded server: pause time: 0-3s 0-300ms 60-70ms throughput: 1 +12.4% +63.5% 30s pause (NFS, 1-dd) NFS, 1 dd, 3G mem, 2.6.38-rc7 3s pause (xfs, 8-dd) xfs, 8 dd, 4G mem, 2.6.38-rc7 Let’s do controllable sleeps! I/O ? sleep i f (dirty exceeded) - writeback_inodes(pages_dirtied * 3/2); + sleep(pages_dirtied / task_ratelimit); and rethink dirty balancing …… Balancing dirty rate apps’ dirty progress disk write progress Balancing dirty pages global dirty limit global dirty pages global dirty setpoint per-disk dirty pages per-disk dirty setpoint IO-less dirty throttling/balancing Do proper sleep()s during sys_write(): .1 throttle each task’s dirty rate around write_bandwidth / N .2 balance the global dirty pages around global

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档