<div dir="ltr">I have 16G RAM in this server. &nbsp; Using a low dirty configuration may lead to a pool I/O performance?</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/14 Lars Ellenberg <span dir="ltr">&lt;<a href="mailto:lars.ellenberg@linbit.com" target="_blank">lars.ellenberg@linbit.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Thu, May 09, 2013 at 10:33:16AM +0800, Mia Lueng wrote:<br>
&gt; # sysctl -a|grep dirty<br>
&gt; vm.dirty_background_ratio = 10<br>
&gt; vm.dirty_background_bytes = 0<br>
&gt; vm.dirty_ratio = 20<br>
&gt; vm.dirty_bytes = 0<br>
&gt; vm.dirty_writeback_centisecs = 500<br>
&gt; vm.dirty_expire_centisecs = 3000<br>
&gt;<br>
&gt; bandwidth is 100M bps<br>
<br>
</div>You can replicate around 10 to 12 MByte per second.<br>
To avoid long &quot;write-out stalls&quot; when flushing caches,<br>
you should not allow more than about 20 MByte dirty,<br>
and start write out much earlier.<br>
<br>
vm.dirty_bytes=20100100<br>
vm.dirty_background_bytes=500100<br>
vm.dirty_writeback_centisecs=97<br>
<br>
A ratio of 20 % of available RAM may well mean several GB.<br>
How much RAM do you have?<br>
<br>
Depending on what usage patterns and data characteristics<br>
you actually have in production, maybe you want to try drbd-proxy.<br>
Or check with LINBIT what other options you have.<br>
<div><div class="h5"><br>
&gt; 2013/5/9 Lars Ellenberg &lt;<a href="mailto:lars.ellenberg@linbit.com">lars.ellenberg@linbit.com</a>&gt;<br>
&gt;<br>
&gt; &gt; On Thu, May 09, 2013 at 12:16:56AM +0800, Mia Lueng wrote:<br>
&gt; &gt; &gt; in drbd 8.4.3£¬I do the following test:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; [root@kvm3 drbd.d]# drbdadm dump drbd0<br>
&gt; &gt; &gt; # resource drbd0 on kvm3: not ignored, not stacked<br>
&gt; &gt; &gt; # defined at /etc/drbd.d/drbd0.res:1<br>
&gt; &gt; &gt; resource drbd0 {<br>
&gt; &gt; &gt; &nbsp; &nbsp; on kvm3 {<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; device &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /dev/drbd0 minor 0;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /dev/vg_kvm3/drbd0;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; meta-disk &nbsp; &nbsp; &nbsp; &nbsp;internal;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; address &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ipv4 <a href="http://192.168.10.6:7700" target="_blank">192.168.10.6:7700</a>;<br>
&gt; &gt; &gt; &nbsp; &nbsp; }<br>
&gt; &gt; &gt; &nbsp; &nbsp; on kvm4 {<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; device &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /dev/drbd0 minor 0;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /dev/vg_kvm4/drbd0;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; meta-disk &nbsp; &nbsp; &nbsp; &nbsp;internal;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; address &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ipv4 <a href="http://192.168.10.7:7700" target="_blank">192.168.10.7:7700</a>;<br>
&gt; &gt; &gt; &nbsp; &nbsp; }<br>
&gt; &gt; &gt; &nbsp; &nbsp; net {<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; protocol &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; csums-alg &nbsp; &nbsp; &nbsp; &nbsp;md5;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; verify-alg &nbsp; &nbsp; &nbsp; md5;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; ping-timeout &nbsp; &nbsp; &nbsp;30;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; ping-int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;30;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; max-epoch-size &nbsp; 8192;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; max-buffers &nbsp; &nbsp; &nbsp;8912;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; unplug-watermark 131072;<br>
&gt; &gt; &gt; &nbsp; &nbsp; }<br>
&gt; &gt; &gt; &nbsp; &nbsp; disk {<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; on-io-error &nbsp; &nbsp; &nbsp;pass_on;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; disk-barrier &nbsp; &nbsp; &nbsp;no;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; disk-flushes &nbsp; &nbsp; &nbsp;no;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; resync-rate &nbsp; &nbsp; &nbsp;100M;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; c-plan-ahead &nbsp; &nbsp; &nbsp;20;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; c-delay-target &nbsp; 100;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; c-max-rate &nbsp; &nbsp; &nbsp; 400M;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; c-min-rate &nbsp; &nbsp; &nbsp; &nbsp;2M;<br>
&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; al-extents &nbsp; &nbsp; &nbsp; 601;<br>
&gt; &gt; &gt; &nbsp; &nbsp; }<br>
&gt; &gt; &gt; }<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; [root@kvm3 oradata]# dd if=t1 of=t2 bs=1M<br>
&gt; &gt; &gt; 5585+1 records in<br>
&gt; &gt; &gt; 5585+1 records out<br>
&gt; &gt; &gt; 5856305152 bytes (5.9 GB) copied, 286.119 s, 20.5 MB/s<br>
&gt; &gt;<br>
&gt; &gt; That writes to the page cache, and from there to the block device.<br>
&gt; &gt;<br>
&gt; &gt; No fsync, no sync: there will still be a few GB in the cache (RAM only).<br>
&gt; &gt;<br>
&gt; &gt; &gt; [root@kvm3 oradata]# cd<br>
&gt; &gt; &gt; [root@kvm3 ~]# umount /oradata<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; it takes lots of time(up to 600 seconds) &nbsp;to umount the drbd mount point.<br>
&gt; &gt;<br>
&gt; &gt; On umount, the filesystem obviously has to flush all dirty pages first.<br>
&gt; &gt;<br>
&gt; &gt; What is your replication bandwidth?<br>
&gt; &gt;<br>
&gt; &gt; &gt; echo &quot;1&quot; &gt;/proc/sys/vm/block_dump<br>
&gt; &gt; &gt; show when umount ,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; [root@kvm3 ~]# dmesg|tail -n 100<br>
&gt; &gt; ...<br>
&gt; &gt; &gt; umount(3958): WRITE block 100925440 on dm-5<br>
&gt; &gt; &gt; umount(3958): WRITE block 100925440 on dm-5<br>
&gt; &gt; &gt; umount(3958): WRITE block 100925440 on dm-5<br>
&gt; &gt; &gt; umount(3958): WRITE block 0 on dm-5<br>
&gt; &gt; &gt; umount(3958): dirtied inode 1053911 (mtab.tmp) on dm-0<br>
&gt; &gt; &gt; umount(3958): dirtied inode 1053911 (mtab.tmp) on dm-0<br>
&gt; &gt; &gt; umount(3958): WRITE block 33845632 on dm-0<br>
&gt; &gt; &gt; umount(3958): dirtied inode 1053912 (?) on dm-0<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Is the reason that I use protocol A?<br>
&gt; &gt;<br>
&gt; &gt; No.<br>
&gt; &gt;<br>
&gt; &gt; But that you need to understand caching, and tunables.<br>
&gt; &gt;<br>
&gt; &gt; Some hints and keywords for a followup search:<br>
&gt; &gt;<br>
&gt; &gt; Check how much &quot;dirty&quot; data (writes not yet on stable storage)<br>
&gt; &gt; is still in RAM:<br>
&gt; &gt; grep Dirty /proc/meminfo<br>
&gt; &gt;<br>
&gt; &gt; Tune how much dirty data is &quot;allowed&quot;<br>
&gt; &gt; sysctl<br>
&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; vm.dirty_background_bytes<br>
&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; vm.dirty_bytes<br>
&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; vm.dirty_writeback_centisecs<br>
&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; vm.dirty_expire_centisecs<br>
&gt; &gt;<br>
&gt; &gt; also compare:<br>
&gt; &gt; time dd if=t1 of=t2 bs=1M; time sync<br>
&gt; &gt; time dd if=t1 of=t2 bs=1M conv=fsync<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; : Lars Ellenberg<br>
&gt; &gt; : LINBIT | Your Way to High Availability<br>
&gt; &gt; : DRBD/HA support and consulting <a href="http://www.linbit.com" target="_blank">http://www.linbit.com</a><br>
&gt; &gt;<br>
</div></div>&gt; &gt; DRBD(R) and LINBIT(R) are registered trademarks of LINBIT, Austria.<br>
<div class="HOEnZb"><div class="h5">&gt; &gt; __<br>
&gt; &gt; please don&#39;t Cc me, but send to list &nbsp; -- &nbsp; I&#39;m subscribed<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; drbd-user mailing list<br>
&gt; &gt; <a href="mailto:drbd-user@lists.linbit.com">drbd-user@lists.linbit.com</a><br>
&gt; &gt; <a href="http://lists.linbit.com/mailman/listinfo/drbd-user" target="_blank">http://lists.linbit.com/mailman/listinfo/drbd-user</a><br>
&gt; &gt;<br>
<br>
&gt; _______________________________________________<br>
&gt; drbd-user mailing list<br>
&gt; <a href="mailto:drbd-user@lists.linbit.com">drbd-user@lists.linbit.com</a><br>
&gt; <a href="http://lists.linbit.com/mailman/listinfo/drbd-user" target="_blank">http://lists.linbit.com/mailman/listinfo/drbd-user</a><br>
<br>
<br>
--<br>
: Lars Ellenberg<br>
: LINBIT | Your Way to High Availability<br>
: DRBD/HA support and consulting <a href="http://www.linbit.com" target="_blank">http://www.linbit.com</a><br>
<br>
DRBD&reg; and LINBIT&reg; are registered trademarks of LINBIT, Austria.<br>
__<br>
please don&#39;t Cc me, but send to list &nbsp; -- &nbsp; I&#39;m subscribed<br>
_______________________________________________<br>
drbd-user mailing list<br>
<a href="mailto:drbd-user@lists.linbit.com">drbd-user@lists.linbit.com</a><br>
<a href="http://lists.linbit.com/mailman/listinfo/drbd-user" target="_blank">http://lists.linbit.com/mailman/listinfo/drbd-user</a><br>
</div></div></blockquote></div><br></div>