On 1/20/16, 10:26 AM, "dev on behalf of Wiles, Keith" <dev-bounces at dpdk.org on behalf of keith.wiles at intel.com> wrote:
>On 1/20/16, 12:32 AM, "dev on behalf of Matthew Hall" <dev-bounces at dpdk.org >on behalf of mhall at mhcomputing.net> wrote: > >>Hello, Please try modifying pktgen-main.c:main() at the top of the function to this: wr_scrn_setw(1); /* Reset the window size, from possible crash run. */ wr_scrn_pos(100, 1); /* Move the cursor to the bottom of the screen again */ printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); fflush(stdout); /* call before the rte_eal_init() */ (void)rte_set_application_usage_hook(pktgen_usage); Maybe this will fix up most of your issues with DPDK output. I normally set the log-level to 7 to remove most of the DPDK messages. >> >>Since the pktgen code is reindented I am finding time to read through it >>and experiment and see if I can get it working. >> >>I have issues with the init process of pktgen. It is difficult to debug >>it because the init code does a lot of very scary stuff to the terminal >>control / TTY device at inconvenient times in an inconvenient order, and >>in the process damages the debug output and damages the screen of your >>GDB without doing weird things to run GDB on a different TTY. >> >>Of course I am willing to contribute patches and not just complain, but >>first I need some help to follow what is going on. >> >>Here is the problematic call-flow with some explanation what went wrong >>trying it on some community machines outside of its original environment: >> >>1) it calls printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); >>which dumps tons of weird boilerplate of licenses, copyrights, code >>creator, etc. >> >>It is open source and everybody that matters already knows who coded it, >>so is this stuff really that important? This gets in the way when you >>are trying to work on it and I just have to comment it out. > >One problem is a number of people wanted to steal the code and use in a paid >application, so the copyright is some what a requirement. As you may know I do >a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see >if we can clean up these messages, but do not hold your breath on getting them >to be removed. >> >>2) it calls wr_scrn_setw and tinkers with the windows size very early in >>the init which can make your terminal weird >> >>3) it calls rte_eal_init which produces a lot of nice debug output, >>which is fine > >IMO most of the information from DPDK is not very useful as why do I need to >see every lcore line, plus a lot of more useless information. Most of the >information could be reduced a couple of lines or only report issues not just >a bunch of useless information. >> >>4) it calls pktgen_init_screen, which calls wr_scrn_init, which calls >>wr_scrn_erase which destroys the valuable debug output just created in >>(c) which is a bad thing > >The screen init should be scrolling the information off the screen to preserve >that info, unless it was changed by mistake. >> >>5) it calls wr_print_copyright and dumps more boilerplate I am not sure >>is needed >> >>6) it logs some helpful messages about the port / descriptor settings >>which is fine >> >>7) it calls the pktgen_config_ports function which can crash in ways you >>need the destroyed debug output to fix. >> >>For example in my case that function crashes here: >> >> if (pktgen.nb_ports == 0) >> pktgen_log_panic("*** Did not find any ports to use ***"); >> >>8) Later it makes a logo and a splash screen (wr_log, wr_splash_screen). >>Is this stuff really needed? This is a ton of output for just starting >>up some test program. >> >>To fix this debug problem I propose some changes which I am happy to >>help develop: >> >>1) decide what of this output we really need here and greatly simplify >>how much gets printed out >> >>2) move wr_scrn_setw right before pktgen_init_screen and after >>rte_eal_init to prevent damaging that output >> >>3) consider how wr_scrn_init is called in pktgen_init_screen, because it >>calls wr_scrn_erase which damages output > >Again it could be scrolling that information off the screen, just need a large >screen scroll buffer. >> >>4) I think that pktgen_config_ports should be called before all this >>weird screen init stuff, so that if it fails you can actually see what >>happened there. >> >>One other random topic... on the long lines of code it looks like there >>are some gigantic tab-indents pushing things off to the right still. One >>example, maybe there are others or another setting which is needed to >>fix all of these: > >Please use tab stop of 4 instead of 8. IMO tab stop of 8 is so 1970?s and we >should not need tab stop of 8 as any system today will work. :-) >> >> info->seq_pkt = (pkt_seq_t *)rte_zmalloc_socket(buff, >>(sizeof(pkt_seq_t) * NUM_TOTAL_PKTS), >> >> RTE_CACHE_LINE_SIZE, >>rte_socket_id()); >> >>Thoughts? >>Matthew Hall > >Improvement to Pktgen is always welcome and the copyright info is going to be >a bit hard to remove as that was one of the requirements when I open sourced >the code. I understand it maybe a bit of output. I do not think it is really a >user issue causing users to stop using it as startup is only down once, in my >case I may start Pktgen a few times a day for development and it does not seem >to slow me down much. :-) >> > > >Regards, >Keith > > > > > Regards, Keith