Could anyone explain why I get so slow DL/UL speeds?



  • First of all, I'm really new to this, and don't understand half of what I've done to actually make this work on Vmware (workstation version 5).

    I'm using windows server 2003 on a AMD 2600+ 1gig Kingston PC3200 computer. From this my Vmware machine got 2gig HDD and 128Mb ram.
    Im using an intel pro 1Gig network card for the incoming connection ( 100/100 Mbps) and a realtek 100/100 to connect the pc to a dlink 1Gbps switch.

    The reason I'm using this configuration is that I had a cheap router earlier that couldn't do much good at all, I got maybe 50Mbps on a good day (DL and UL) and all the rest as basic surfin/gaming would be messed up. However directly from my wall to the computer I get 90-100 Mbps. I need a fileserver as storage and don't have room for 2 computers nor want to pay the electricity for 2.

    So, after spending all day yesterday (yes all day, and yes I told you I was new to this;)) I finally got pfSense working on the machine, and my other machine conneced to the switch. When doing speedtests (also tried downloading stuff from DC, same result) I now only get 40-60Mbps with a CPU load on 80-90% with a few spikes on 100%, and memory usage on 20% (according to pfSense). I have also tried switching the networkcards but the results were pretty much the same, there were a minor improvement when the intel was connected to the WAN. How comes my CPU usage is that high, have seen ppl running this on P2s etc?

    My simple question is, what is wrong and what can I do to fix it?

    I have read that these Vmware builds aren't recommended, probably for reasons I don't understand :) But is this my problem, that I can't get more speed because it isn't a dedicated computer, and if so, is there another solution for fileserver/router?

    Would I get any improvement if I ran pfSense with Vmware server instead and/or another OS?



  • Must admit I don't see the point in using VMWare workstation - I run under VMWare server.

    See the things in this post http://forum.pfsense.org/index.php/topic,6466.0.html - especially the link to the VMWare info.

    Did you sue the VMWare guide here: http://doc.pfsense.org/index.php/Installing_pfSense_in_vmware_under_windows?



  • @Pootle:

    Must admit I don't see the point in using VMWare workstation - I run under VMWare server.

    See the things in this post http://forum.pfsense.org/index.php/topic,6466.0.html - especially the link to the VMWare info.

    Did you sue the VMWare guide here: http://doc.pfsense.org/index.php/Installing_pfSense_in_vmware_under_windows?

    Maybe I'm missing something, but i don't see a link in that thread?

    Yeah i uses that guide and the "for dummies" guide on the tutorials at pfSense.com.
    I think I tried Vmware server first, along with pfsense 1.20 RC3 (or something similar, know I downgraded). Reason I downgraded was that I got stuck when trying to install to disk, it always told me it couldn't find "d:" (cd reader). So i downgraded to like pfsense 1.0 but it didn't work. Downgraded to Vmware 5.0 since the flash guide was using that particular version. Still didn't manage to get it to work, until I saw that link that i had to assign my wan card to vmnet2, I had done it the other way around.

    I also read "The speed of NIC's in Vmware is always virtual. Vlance is 10Mbit, but can actually go much faster(limited by CPU)."
    in http://forum.pfsense.org/index.php/topic,7396.0.html - Have tried to make the edit in my .vmx but it made my machine "disapear". And as for installing drivers in that link, http://forum.pfsense.org/index.php/topic,7271.0.html, I can't manage to find the loader.conf file to edit …

    Anyway, would changing to vmware server/updating pfsense/ fixing that driver thing actually improve my performance, or is my hardware too bad? Or simply Vmware a REALLY bad idea to use to save myself a computer i don't have?

    Or put this way with the hardware I have (including vmware) What performance could I expect if I had the brains to optimize everything? The answer to that question could probably save myself a great deal of time, and whoever here who would "have" to bare with my questions:D

    EDIT: Still, isn't the CPU usage a bit high, or is it because of my Realtek card?



  • I can run about 3Mb /sec with around 5% - 10% cpu, but it depends on many things like including packet sizes, so there is no simple guidline. Changing the vmx file config after you have built the VM, will give you problems, you need to rerun the interface assignement as the network devices are renamed, that i9s why it is better to do this before you do the install.

    I do not understand why you have problems with VMWare server,I have used since it was pre-realease with no significant issues.

    If your CD device in the VM is reporting no media, then it is probably because you have not assigned it to your physical CD, or to an iso file.  Maybe you should try and find a way past these problems, rather than abandon the approach at the first obstacle, reverting to earlier releaes of VMWare and pfSense is just going to cause you a whole load of other problems.

    For 100Mb, your hardware may well struggle, which is why the better vmware drivers are worth trying.  If you can afford a 100Mb symmetrical connection, you only need spend a couple of months rental to get a dedicated small machine.



  • Yeah suppose I will give it all a try now that I know abit more how Vmware actually works.
    Thanks for your help :)

    One thing though, I live in the sweet country of sweden, a 100/100 connection is 20$ ;) I'm still poor:D



  • Just edit your .vmx file(with notepad!) and change the network devices to e1000: http://forum.pfsense.org/index.php/topic,7396.0.html
    (Never seen a VM disappear, but I can imagine it will if you corrupt the .vmx).

    Turn the VM off(maybe better to close Vmware), and change the ethernet0.virtualDev en ethernet1.virtualDev to:
    ethernet0.virtualDev = "e1000"
    ethernet1.virtualDev = "e1000"

    Power on Vmware and start pfSense.
    After this pfSense should detect 2 Intel Gigabit nics.  This also requires reconfiguration of the LAN en WAN interface using the Pfsense console.



  • @Damned:

    I live in the sweet country of sweden, a 100/100 connection is 20$ ;) I'm still poor:D

    AAAAAAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRGGGGGGHHH!



  • @YoMarK:

    Just edit your .vmx file(with notepad!) and change the network devices to e1000: http://forum.pfsense.org/index.php/topic,7396.0.html
    (Never seen a VM disappear, but I can imagine it will if you corrupt the .vmx).

    Turn the VM off(maybe better to close Vmware), and change the ethernet0.virtualDev en ethernet1.virtualDev to:
    ethernet0.virtualDev = "e1000"
    ethernet1.virtualDev = "e1000"

    Power on Vmware and start pfSense.
    After this pfSense should detect 2 Intel Gigabit nics.  This also requires reconfiguration of the LAN en WAN interface using the Pfsense console.

    How can I tell if I got it right?

    First of all, I didn't have any line with "ethernet0.virtualDev" So I simply added it for ethernet0 and 1.
    When I start and reassign I still get to choose between "le0" and "le1"

    I also tried to do the vmxnet drivers as in the guide as well, and still when i reassign I still only get to choose from "le0" and "le1".

    I have reinstalled it all with Vmware server instead, tried the RC3 but got an error message during installaton process to hdd that something somewhere coulnd't be found. Tried the 1.01 version of pfsense and that solved that issue.

    When executing the command "pkg_add vmware-guestd-6.0.2.59824.tbz" - Should I get any kind of "completed" message? Because when ive gotten that far it simply brings me back to shell so i can type a new command, however it jumped one line, so it looks like my last command was nothing. Hope i'm making sense =)

    did edit loader.conf though through pfsense and all, so those bits went good, same with editing the .vmx file.

    EDIT: Been doing some new speedtests, still only 40-50Mbps and the CPU usage on 90-100% :/



  • First of all, you don't have to install the vmware tools to use e1000.
    standard pfSense 1.2 should detect Intel gigabit NIC, is this case em0 and em1.

    Tested it(just for you ;) ), and works great, using 1.2 RC on Vmware workstation 5.5.
    Just create a new VM, choose "custom", choose "New" Virtual Machine format, Choose Other–> FreeBSD as Operating system, correct path, One processor, 192MB RAM minimum, bridged networking(in my case), LSI logic SCSI, New virtual Disk for example 1 GB(I always use SCSI for Vmware ESX compatibility), Complete.
    Close Vmware workstation now.

    The above results in an .vmx file. Open this file with notepad , and remove all enties starting with "ethernet", and put the following at the bottom of the file:

    ethernet0.present = "TRUE"
    ethernet0.wakeOnPcktRcv = "FALSE"
    ethernet0.virtualDev = "e1000"
    ethernet0.addressType = "generated"
    ethernet1.present = "TRUE"
    ethernet1.wakeOnPcktRcv = "FALSE"
    ethernet1.virtualDev = "e1000"
    ethernet1.addressType = "generated"
    

    Start Vmware Workstation, Edit Pfsense VM, connect the pfsense1.2.iso to the cdrom(use iso image), ok.
    Power the pfSense Vm on.
    It WILL detect 2 Intel gigabit nics. If it doesnt, you did something wrong or using the wrong version of pfSense or Vmware Workstation(i'm using 5.5, and pfSense 1.2).

    My complete .vmx file:

    config.version = "8"
    virtualHW.version = "4"
    scsi0.present = "TRUE"
    scsi0.virtualDev = "lsilogic"
    memsize = "192"
    MemAllowAutoScaleDown = "FALSE"
    scsi0:0.present = "TRUE"
    scsi0:0.fileName = "FreeBSD.vmdk"
    ide1:0.present = "TRUE"
    ide1:0.fileName = "X:\software\Pfsense\pfSense.iso"
    ide1:0.deviceType = "cdrom-image"
    floppy0.fileName = "A:"
    usb.present = "TRUE"
    sound.present = "TRUE"
    sound.virtualDev = "es1371"
    sound.fileName = "-1"
    sound.autodetect = "TRUE"
    displayName = "pfSense"
    guestOS = "freebsd"
    nvram = "FreeBSD.nvram"
    
    scsi0:0.redo = ""
    
    uuid.location = "56 4d 4d 5d f8 16 58 d5-a2 5e 93 c4 3e e0 82 bb"
    uuid.bios = "56 4d 4d 5d f8 16 58 d5-a2 5e 93 c4 3e e0 82 bb"
    ethernet0.present = "TRUE"
    ethernet0.wakeOnPcktRcv = "FALSE"
    ethernet0.virtualDev = "e1000"
    ethernet0.addressType = "generated"
    ethernet1.present = "TRUE"
    ethernet1.wakeOnPcktRcv = "FALSE"
    ethernet1.virtualDev = "e1000"
    ethernet1.addressType = "generated"
    
    ethernet0.generatedAddress = "00:0c:29:e0:82:bb"
    ethernet1.generatedAddress = "00:0c:29:e0:82:c5"
    ethernet0.generatedAddressOffset = "0"
    ethernet1.generatedAddressOffset = "10"
    

    Don't add the last 4 lines manually, Vmware does this automatically. Only use the lines at the beginning of this post

    –Mark



  • If you want maximum performance, you must use the vmxnet driver.
    First follow this guide how to install vmware Tools and vmxnet driver: http://forum.pfsense.org/index.php/topic,7271.0.html

    The following lines will make sure that Vmware presents the correct NIC-type to pfSense:

    ethernet0.present = "TRUE"
    ethernet0.wakeOnPcktRcv = "FALSE"
    ethernet0.virtualDev = "vmxnet"
    ethernet0.addressType = "generated"
    
    


  • @YoMarK:

    If you want maximum performance, you must use the vmxnet driver.
    First follow this guide how to install vmware Tools and vmxnet driver: http://forum.pfsense.org/index.php/topic,7271.0.html

    The following lines will make sure that Vmware presents the correct NIC-type to pfSense:

    ethernet0.present = "TRUE"
    ethernet0.wakeOnPcktRcv = "FALSE"
    ethernet0.virtualDev = "vmxnet"
    ethernet0.addressType = "generated"
    
    

    Yeah you'r right, I didnt use the correct .vmx :D haha

    Anyway, amnaged to get the e1000 to work, however without any major improvements, maybe 5Mpbs. I know get 55Mbps with a CPU load of 100%

    As for the vmxnet drivers I still think I do the pkg_add part wrong (although I do as the guide says, lette for letter), because I dont get any confirmation that it actually did anything … And when i boot up pfsense again, it doesnt detect any interfaces at all :D

    However, I'm gonna try with anoher intel pro card, so I have 2 of them, see if itll work better.

    Thanks alot for helping me! ^^



  • When you convert the NIC to VMXnet, pfSense will loose them, although the VM still has them, they have different names that pfSense won't be hooked up to, you need to rerun the interfaces setup through the console to pick them up again - take care you get them the right way around :)



  • Just run

    fetch -v -o /boot/kernel/ http://www.pfsense.com/mirrors/packages/All/vmxnet.ko
    

    Also, please make sure, that the line

    vmxnet_load="YES"
    

    exists in /boot/loader.conf
    So your complete /boot/loader.conf should look like:

    
    autoboot_delay="1"
    hint.apic.0.disabled=1
    kern.hz=100
    vmxnet_load="YES"
    
    

    pkg_add the vmware tools is not necessary for the operation of the vmxnet driver(and it does not return "Installation Successful" or something like that. So no error: it installed correctly).



  • @Pootle:

    When you convert the NIC to VMXnet, pfSense will loose them, although the VM still has them, they have different names that pfSense won't be hooked up to, you need to rerun the interfaces setup through the console to pick them up again - take care you get them the right way around :)

    I really did that, and it really wasn't any interfaces for me to assign :(
    Im gonna make a dedicated partition just to see how the performance will differ, if it differs too much I suppose Ill have to run FreeBSD with FAT or something … Just that I see a billion complications for me Vista < -- > FreeBSD ... :D

    for now however, I have 2 sweet weeks of work ahead of me, hopefully Ill find my time =)



  • pfSense is not disk I/O intensive, so making a dedicated partition will not improve anything.

    Throughput is your problem, and the vmxnet driver provides the fastest throughputs in Vmware.
    All the information on how to get vmxnet working is provides in this thread, and is 2 minutes work, so good luck ;)


Log in to reply