jboss4 on freebsd

Dmitriy _pppp at mail.ru
Tue Jun 24 15:08:38 UTC 2008



-----Original Message-----
From: Stefan Lambrev <stefan.lambrev at moneybookers.com>
To: freebsd-net at FreeBSD.org
Date: Tue, 24 Jun 2008 15:58:30 +0300
Subject: jboss4 on freebsd

> 
> Greetings,
> 
> I'm experimenting with jboss4 cluster under freebsd 7 (amd64).
> In my configuration I have 2 jboss instances which are in cluster and 
> they communicate via separate network (used only for shared data)
> When I create some load on the application sometimes I see this error:
> 
> 2008-06-24 14:46:21,602 ERROR [org.jgroups.protocols.UDP] failed sending 
> message to 10.50.1.1:57680 (59800 bytes)
> java.io.IOException: No buffer space available
> 
> It looks very much, that jboss can't handle properly such error as on 
> linux there is no such thing as no network buffers ;) - 
> http://wiki.freebsd.org/AvoidingLinuxisms
> 
> But what really bothers me is that I see "No buffer space available" on 
> very low network IO -
> 
>             input          (em2)           output
>    packets  errs      bytes    packets  errs      bytes colls
>        144     0    2203390        292     0    2072771     0
>       1568     0    2329764         63     0       9099     0
>         76     0     231562         34     0     148306     0
>        563     0    1152531       1009     0    1768748     0
>       1625     0    2601502        104     0     229728     0
>         65     0     467296         85     0     441566     0
>        464     0     680082        973     0    1439442     0
>        357     0    1940361         55     0     222484     0
>       1651     0    2827932        145     0     450265     0
> 
> E.g. traffic between 1-3MB/s.
> 
> I'm using:
> em2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
>         options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
>         ether 00:15:17:60:04:c8
>         inet 10.3.3.117 netmask 0xffffff00 broadcast 10.3.3.255
>         media: Ethernet autoselect (1000baseTX <full-duplex>)
>         status: active
> 
> em2: <Intel(R) PRO/1000 Network Connection 6.9.5> port 0x2020-0x203f mem 
> 0xb8820000-0xb883ffff,0xb8400000-0xb87fffff irq 18 at device 0.0 on pci5
> em2: Using MSI interrupt
> em2: [FILTER]
> 
> and my sysctl.conf is:
> kern.maxfiles=65000
> kern.ipc.shmmax=67108864
> kern.fallback_elf_brand=3
> kern.threads.max_threads_per_proc=6000
> kern.ipc.somaxconn=512
> #jboss extra
> net.inet.udp.maxdgram=73728
> kern.ipc.maxsockbuf=1048576
> net.inet.udp.recvspace=147456
> kern.ipc.maxsockets=49312
> 
> Any ideas how I can improve things?
> 

I guess you get the error from the NIC driver. There 2 conditions which can trigger it:
1. if( adapter->num_tx_desc_avail < EM_TX_OP_THRESHOLD )
2. if( nsegs > ( adapter->num_tx_desc_avail - 2 ) )

I have 2 suggestions how to fix your error:
1. try to disable TXCSUM ( #ifconfig em2 -txcsum )
2. increase the number of transfer descriptors available if your hardware supports it:
[man em(4) excerpt]
     Tunables can be set at the loader(8) prompt before booting the kernel or
     stored in loader.conf(5).
     hw.em.txd
             Number of transmit descriptors allocated by the driver.  The
             default value is 256.  The 82542 and 82543-based adapters can
             handle up to 256 descriptors, while others can have up to 4096.
     hw.em.tx_int_delay
             This value delays the generation of transmit interrupts in units
             of 1.024 microseconds.  The default value is 64.

     hw.em.tx_abs_int_delay
             If hw.em.tx_int_delay is non-zero, this tunable limits the maxi-
             mum delay in which a transmit interrupt is generated.
[/man]

Regards,
Dmitriy.


More information about the freebsd-net mailing list