1. 12 12月, 2012 2 次提交
    • M
      bandwidth: Create hierarchical shaping classes · 67159f1c
      Michal Privoznik 提交于
      These classes can borrow unused bandwidth. Basically,
      only egress qdsics can have classes, therefore we can
      do this kind of traffic shaping only on host's outgoing,
      that is domain's incoming traffic.
      67159f1c
    • M
      bandwidth: Attach sfq to leaf node · 7e5040bd
      Michal Privoznik 提交于
      Stochastic Fairness Queuing (SFQ) is queuing discipline
      (qdisc) which doesn't really shape any traffic but 'just'
      re-arrange packets in sending buffer so no stream starve.
      The goal is to ensure fairness. There is basically only one
      configuration parameter (perturb) which is set to advised
      value of 10.
      7e5040bd
  2. 21 9月, 2012 1 次提交
  3. 18 9月, 2012 1 次提交
    • M
      virNetDevBandwidthClear: Improve error handling · 2f678bb1
      Martin Kletzander 提交于
      Two changes are introduced in this patch:
      
       - The first change removes ATTRIBUTE_RETURN_CHECK from
         virNetDevBandwidthClear, because it was called with ignore_value
         always, anyway. The function is used even when it's not necessary
         to call it, just for cleanup purposes.
      
       - The second change is added ignoring of the command's exit status,
         since it may report an error even when run just as "to be sure we
         clean up" function. No libvirt errors are suppresed by this.
      2f678bb1
  4. 23 7月, 2012 1 次提交
    • O
      Desert the FSF address in copyright · f9ce7dad
      Osier Yang 提交于
      Per the FSF address could be changed from time to time, and GNU
      recommends the following now: (http://www.gnu.org/licenses/gpl-howto.html)
      
        You should have received a copy of the GNU General Public License
        along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
      
      This patch removes the explicit FSF address, and uses above instead
      (of course, with inserting 'Lesser' before 'General').
      
      Except a bunch of files for security driver, all others are changed
      automatically, the copyright for securify files are not complete,
      that's why to do it manually:
      
        src/security/security_selinux.h
        src/security/security_driver.h
        src/security/security_selinux.c
        src/security/security_apparmor.h
        src/security/security_apparmor.c
        src/security/security_driver.c
      f9ce7dad
  5. 29 6月, 2012 1 次提交
    • E
      Fix vm's outbound traffic control problem · 0ac3baee
      Eiichi Tsukata 提交于
      Hello,
      
      This is a patch to fix vm's outbound traffic control problem.
      
      Currently, vm's outbound traffic control by libvirt doesn't go well.
      This problem was previously discussed at libvir-list ML, however
      it seems that there isn't still any answer to the problem.
      http://www.redhat.com/archives/libvir-list/2011-August/msg00333.html
      
      I measured Guest(with virtio-net) to Host TCP throughput with the
      command "netperf -H".
      Here are the outbound QoS parameters and the results.
      
      outbound average rate[kilobytes/s] : Guest to Host throughput[Mbit/s]
      ======================================================================
      1024  (8Mbit/s)                    : 4.56
      2048  (16Mbit/s)                   : 3.29
      4096  (32Mbit/s)                   : 3.35
      8192  (64Mbit/s)                   : 3.95
      16384 (128Mbit/s)                  : 4.08
      32768 (256Mbit/s)                  : 3.94
      65536 (512Mbit/s)                  : 3.23
      
      The outbound traffic goes down unreasonably and is even not controled.
      
      The cause of this problem is too large mtu value in "tc filter" command run by
      libvirt. The command uses burst value to set mtu and the burst is equal to
      average rate value if it's not set. This value is too large. For example
      if the average rate is set to 1024 kilobytes/s, the mtu value is set to 1024
      kilobytes. That's too large compared to the size of network packets.
      Here libvirt applies tc ingress filter to Host's vnet(tun) device.
      Tc ingress filter is implemented with TBF(Token Buckets Filter) algorithm. TBF
      uses mtu value to calculate the amount of token consumed by each packet. With too
      large mtu value, the token consumption rate is set too large. This leads to
      token starvation and deterioration of TCP throughput.
      
      Then, should we use the default mtu value 2 kilobytes?
      The anser is No, because Guest with virtio-net device uses 65536 bytes
      as mtu to transmit packets to Host, and the tc filter with the default mtu
      value 2k drops packets whose size is larger than 2k. So, the most packets
      is droped and again leads to deterioration of TCP throughput.
      
      The appropriate mtu value is 65536 bytes which is equal to the maximum value
      of network interface device defined in <linux/netdevice.h>. The value is
      not so large that it causes token starvation and not so small that it
      drops most packets.
      Therefore this patch set the mtu value to 64kb(== 65535 bytes).
      
      Again, here are the outbound QoS parameters and the TCP throughput with
      the libvirt patched.
      
      outbound average rate[kilobytes/s] : Guest to Host throughput[Mbit/s]
      ======================================================================
      1024  (8Mbit/s)                    : 8.22
      2048  (16Mbit/s)                   : 16.42
      4096  (32Mbit/s)                   : 32.93
      8192  (64Mbit/s)                   : 66.85
      16384 (128Mbit/s)                  : 133.88
      32768 (256Mbit/s)                  : 271.01
      65536 (512Mbit/s)                  : 547.32
      
      The outbound traffic conforms to the given limit.
      
      Thank you,
      Signed-off-by: NEiichi Tsukata <eiichi.tsukata.xh@hitachi.com>
      0ac3baee
  6. 28 6月, 2012 1 次提交
  7. 29 11月, 2011 1 次提交
  8. 15 11月, 2011 1 次提交
    • D
      Split src/util/network.{c,h} into 5 pieces · d3406045
      Daniel P. Berrange 提交于
      The src/util/network.c file is a dumping ground for many different
      APIs. Split it up into 5 pieces, along functional lines
      
       - src/util/virnetdevbandwidth.c: virNetDevBandwidth type & helper APIs
       - src/util/virnetdevvportprofile.c: virNetDevVPortProfile type & helper APIs
       - src/util/virsocketaddr.c: virSocketAddr and APIs
       - src/conf/netdev_bandwidth_conf.c: XML parsing / formatting
         for virNetDevBandwidth
       - src/conf/netdev_vport_profile_conf.c: XML parsing / formatting
         for virNetDevVPortProfile
      
      * src/util/network.c, src/util/network.h: Split into 5 pieces
      * src/conf/netdev_bandwidth_conf.c, src/conf/netdev_bandwidth_conf.h,
        src/conf/netdev_vport_profile_conf.c, src/conf/netdev_vport_profile_conf.h,
        src/util/virnetdevbandwidth.c, src/util/virnetdevbandwidth.h,
        src/util/virnetdevvportprofile.c, src/util/virnetdevvportprofile.h,
        src/util/virsocketaddr.c, src/util/virsocketaddr.h: New pieces
      * daemon/libvirtd.h, daemon/remote.c, src/conf/domain_conf.c,
        src/conf/domain_conf.h, src/conf/network_conf.c,
        src/conf/network_conf.h, src/conf/nwfilter_conf.h,
        src/esx/esx_util.h, src/network/bridge_driver.c,
        src/qemu/qemu_conf.c, src/rpc/virnetsocket.c,
        src/rpc/virnetsocket.h, src/util/dnsmasq.h, src/util/interface.h,
        src/util/iptables.h, src/util/macvtap.c, src/util/macvtap.h,
        src/util/virnetdev.h, src/util/virnetdevtap.c,
        tools/virsh.c: Update include files
      d3406045