From: Charles Duffy <Charles_Duffy@messageone.com>
To: kvm@vger.kernel.org
Subject: e1000 PXE breakage bisected down in kvm-userspace
Date: Mon, 04 Aug 2008 16:02:17 -0500 [thread overview]
Message-ID: <g77qp3$frj$1@ger.gmane.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 1522 bytes --]
Per subject. "git bisect run" script (and libvirt xml helper) attached.
> 87b5acf6125d205119e3194c02ed6e71715517dc is first bad commit
> commit 87b5acf6125d205119e3194c02ed6e71715517dc
> Author: Anthony Liguori <aliguori@us.ibm.com>
> Date: Wed May 7 13:09:40 2008 -0500
>
> kvm: qemu: stop dropping so many RX packets in tap
>
> Normally, tap always reads packets and simply lets the client drop them if it
> cannot receive them. For virtio-net, this results in massive packet loss and
> about an 80% performance loss in TCP throughput.
>
> This patch modifies qemu_send_packet() to only deliver a packet to a VLAN
> client if it doesn't have a fd_can_read method or the fd_can_read method
> indicates that it can receive packets. We also return a status of whether
> any clients were able to receive the packet.
>
> If no clients were able to receive a packet, we buffer the packet until a
> client indicates that it can receive packets again.
>
> This patch also modifies the tap code to only read from the tap fd if at least
> one client on the VLAN is able to receive a packet.
>
> Finally, this patch changes the tap code to drain all possible packets from
> the tap device when the tap fd is readable.
>
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Avi Kivity <avi@qumranet.com>
>
> :040000 040000 648a4d52612e0ce68167f279d30bd3f4ec0f22f4 85352e7b252abb1247af2f024eab10a3e8ec0084 M qemu
[-- Attachment #2: kvm-e1000-test --]
[-- Type: text/plain, Size: 1425 bytes --]
#!/bin/bash
LIBVIRT_VM_NAME=com.m1dev.syseng.cduffy.boottest
LIBVIRT_VM_XML=/local/src/kvm-e1000-test.xml
VM_CONSOLE_LOG=/local/src/kvm-e1000-test.out
SRC_TREE_USER=/local/src/kvm-userspace
SRC_TREE_KERN=/local/src/kvm
set -e
function try_patch() {
local PATCH="$1"
if patch -f -p0 --dry-run < "$PATCH" ; then
patch -p0 < "$PATCH"
fi
return 0
}
function cleanup() {
virsh destroy ${LIBVIRT_VM_NAME} || true
rm -f ${VM_CONSOLE_LOG}
}
function test_failure() {
exit 125
}
trap test_failure 0
cd ${SRC_TREE_USER}
git reset --hard
try_patch ../kvm-userspace.centos5_compat.kvm-69.patch
try_patch ../kvm-userspace.centos5_compat.kvm-70.patch
./configure \
--prefix=/opt/kvm.git \
--kerneldir=/usr/src/kernels/2.6.18-92.1.6.el5-x86_64 \
--disable-gfx-check \
--disable-sdl
make WANT_MODULE= KERNELDIR=${SRC_TREE_KERN} clean
make WANT_MODULE= KERNELDIR=${SRC_TREE_KERN}
make WANT_MODULE= KERNELDIR=${SRC_TREE_KERN} install
git reset --hard
cleanup
virsh create "${LIBVIRT_VM_XML}"
sleep 5
if [ ! -e "${VM_CONSOLE_LOG}" ] ; then
echo 'ERR: No virtual console detected' >&2
exit 125
fi
echo 'Waiting for kernel splash notice' >&2
trap - 0
trap cleanup 0
COUNTDOWN=60
while [ "$COUNTDOWN" -gt 0 ] ; do
echo -n '.' >&2
COUNTDOWN="$(($COUNTDOWN - 1))"
sleep 1
if grep -e 'Linux version' ${VM_CONSOLE_LOG} ; then
echo 'OK: net boot succeeded' >&2
exit 0
fi
done
echo 'BAD: no net boot detected' >&2
exit 1
[-- Attachment #3: kvm-e1000-test.xml --]
[-- Type: text/xml, Size: 992 bytes --]
<domain type='kvm'>
<name>com.m1dev.syseng.cduffy.boottest</name>
<uuid>70d09285-f451-426d-8ab0-4c4810616ce6</uuid>
<memory>768432</memory>
<currentMemory>768432</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='i686' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/opt/kvm.git/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<source file='/local/VM/com.m1dev.syseng.cduffy.boottest.raw'/>
<target dev='sda' bus='scsi'/>
</disk>
<interface type='network'>
<mac address='00:16:3e:fe:cb:31'/>
<source network='com.m1dev.syseng.cduffy'/>
<model type='e1000'/>
</interface>
<console type='file'>
<source path='/local/src/kvm-e1000-test.out'/>
<target port='0'/>
</console>
</devices>
</domain>
next reply other threads:[~2008-08-04 21:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-04 21:02 Charles Duffy [this message]
2008-08-04 21:11 ` e1000 PXE breakage bisected down in kvm-userspace Anthony Liguori
2008-08-04 21:17 ` Charles Duffy
2008-08-04 21:43 ` Anthony Liguori
2008-08-04 22:00 ` Charles Duffy
2008-08-05 1:07 ` Charles Duffy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='g77qp3$frj$1@ger.gmane.org' \
--to=charles_duffy@messageone.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).