lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE : [lwip-users] Optimizations for applications requiring limitedfuncti


From: Frédéric BERNON
Subject: RE : [lwip-users] Optimizations for applications requiring limitedfunctionality.
Date: Sat, 14 Apr 2007 12:02:49 +0200

Hi Roger,

>I have noticed a decrease in performance (about 40%)
40% ???? Was is this measure ? Max bandwidth on output, number of cycles used, 
footprint? If I understand what you wrote, it was on max bandwidth? And just 
due to statistics? Seems strange...

About reducing code size ("raw" API, ARP, ICMP echo, TCP/IP, and UDP), I think 
you can set options like this (some are based on last cvs), but read opt.h and 
CHANGELOG to get more details :

#define SYS_LIGHTWEIGHT_PROT            1 /* I suppose you are in single thread 
model, or you got your own safe-thread feature */
#define NO_SYS                          1 /* Same, Simon Goldschmidt comment 
that like "NO_SYS=1 means raw-API/polling only and NO_SYS=0 means 
netconn/socket-API & tcpip_thread()", and it's true in most of cases */
#define MEM_LIBC_MALLOC                 1 /* Disable if you don't got a c 
runtime, or if it's not efficient */
#define MEMP_SANITY_CHECK               0 /* to use on debug mode, if you think 
 you got corrupt memory */
#define LWIP_ARP                        1 /* Need for you, if you have an arp 
device (mainly ethernet), of course */
#define ARP_QUEUEING                    0 /* Reduce code (note if you use it 
that this feature got several patch since 1.2.0) */
#define ETHARP_TRUST_IP_MAC             0 /* Will reduce cycles consume if your 
device receive lot of packets */
#define ETHARP_TCPIP_INPUT              0 /* Not need if you use rawapi */
#define ETHARP_TCPIP_ETHINPUT           0 /* Not need if you use rawapi */
#define IP_FORWARD                      0 /* Not need if you don't do a router 
or not use loopif */
#define IP_OPTIONS                      1 /* 1, except if your device is 
deployed on a network where you don't have a FULL control */
#define IP_REASSEMBLY                   0 /* Will reduce footprint, but you 
can't receive fragmented packets */
#define IP_FRAG                         0 /* Will reduce footprint, but you 
can't send fragmented packets */
#define LWIP_RAW                        0 /* Warning, this is for raw pcb (use 
by example if you want to create a ping or tracert tools) and not for what is 
called "raw api" (which is also called low-level "core" / "callback" or native 
api)*/
#define LWIP_DHCP                       0 /* You don't say you need it */
#define LWIP_SNMP                       0 /* You don't say you need it */
#define LWIP_IGMP                       0 /* You don't say you need it */
#define LWIP_UDP                        1 /* You say you need it */
#define LWIP_TCP                        1 /* You say you need it */

#define LWIP_NETIF_HOSTNAME             0 /* You don't say you need it */
#define LWIP_NETIF_API                  0 /* Can be used with sequential api */
#define LWIP_NETIF_CALLBACK             0 /* You don't say you need it */
#define LWIP_HAVE_LOOPIF                0 /* You don't say you need it */ 

#define LWIP_EVENT_API                  0 /* I suppose you use CALLBACK_API, 
but set to 0 if you need it */

#define LWIP_COMPAT_SOCKETS             0 /* You don't need it */
#define LWIP_POSIX_SOCKETS_IO_NAMES     0 /* You don't need it */
#define LWIP_TCP_KEEPALIVE              0 /* You don't need it */
#define LWIP_SO_RCVTIMEO                0 /* You don't need it */
#define SO_REUSE                        0 /* Don't work */
#define LWIP_STATS                      0 /* You already said you disable it */ 
#define PPP_SUPPORT                     0 /* You don't say you need it */ 

You can try this, or wait other developers comments... Note I don't have set 
any value about sizes or delays, which have to be set to get the performance 
you need...

====================================
Frédéric BERNON 
HYMATOM SA 
Chef de projet informatique 
Microsoft Certified Professional 
Tél. : +33 (0)4-67-87-61-10 
Fax. : +33 (0)4-67-70-85-44 
Email : address@hidden 
Web Site : http://www.hymatom.fr 
====================================
P Avant d'imprimer, penser à l'environnement
 


-----Message d'origine-----
De : address@hidden [mailto:address@hidden De la part de Roger Cover
Envoyé : samedi 14 avril 2007 01:32
À : address@hidden
Objet : [lwip-users] Optimizations for applications requiring 
limitedfunctionality.


Greetings,

I have completed my upgrade to version 1.2.0 (from 0.6.3). The reliability of 
my system is much improved. The developers have done a good job increasing the 
robustness of the library.

Now that I have version 1.2.0 running, I have noticed a decrease in performance 
(about 40%). Part of the decrease I initially noticed was because my old 
lwipopts.h file used an old (and no longer correct) method to turned statistics 
collection off. I am using the "raw" API and I only need ARP, ICMP echo, 
TCP/IP, and UDP. The major performance issue is only in UDP.

This brings me to my question: I already found how to turn off the statistics 
and "raw" packet code. What else can I turn off in lwipopts.h to remove things 
I don't need? Version 1.2.0 has a lot of features that 0.6.3 did not have, and 
any help jump-starting my performance improvement quest will be greatly 
appreciated.

Regards,
Roger W. Cover
Spectral Instruments, Inc.
420 N. Bonita Ave.
Tucson, AZ 85745
Voice: 520-884-8821 ext. 144
FAX: 520-884-8803


_______________________________________________
lwip-users mailing list
address@hidden http://lists.nongnu.org/mailman/listinfo/lwip-users

Attachment: Frédéric BERNON.vcf
Description: Frédéric BERNON.vcf


reply via email to

[Prev in Thread] Current Thread [Next in Thread]