Hello!
Really needed?
If so -- Wouldn't a concept of a bitmask to control also which CPU's
that runs the threads be more general?
Cheers.
--ro
Luiz Fernando Capitulino writes:
>
> Currently, pktgen will create one thread for each online CPU in the
> system. That behaivor may be annoying if you're using pktgen in a
> large SMP system.
>
> This patch adds a new module parameter called 'pg_max_threads', which
> can be set to the maximum number of threads pktgen should create.
>
> For example, if you're playing with pktgen in SMP system with 8
> CPUs, but want only two pktgen's threads, you can do:
>
> modprobe pktgen pg_max_threads=2
>
> Signed-off-by: Luiz Capitulino <[EMAIL PROTECTED]>
>
> ---
>
> net/core/pktgen.c | 23 +++++++++++++++++------
> 1 files changed, 17 insertions(+), 6 deletions(-)
>
> e210ad47d0db52496fdaabdd50bfe6ee0bcc53cd
> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> index 37b25a6..994aef1 100644
> --- a/net/core/pktgen.c
> +++ b/net/core/pktgen.c
> @@ -154,7 +154,7 @@
> #include <asm/div64.h> /* do_div */
> #include <asm/timex.h>
>
> -#define VERSION "pktgen v2.66: Packet Generator for packet performance
> testing.\n"
> +#define VERSION "pktgen v2.67: Packet Generator for packet performance
> testing.\n"
>
> /* #define PG_DEBUG(a) a */
> #define PG_DEBUG(a)
> @@ -488,6 +488,7 @@ static unsigned int fmt_ip6(char *s, con
> static int pg_count_d = 1000; /* 1000 pkts by default */
> static int pg_delay_d;
> static int pg_clone_skb_d;
> +static int pg_max_threads;
> static int debug;
>
> static DEFINE_MUTEX(pktgen_thread_lock);
> @@ -3184,7 +3185,7 @@ static int pktgen_remove_device(struct p
>
> static int __init pg_init(void)
> {
> - int cpu;
> + int i, threads;
> struct proc_dir_entry *pe;
>
> printk(version);
> @@ -3208,15 +3209,24 @@ static int __init pg_init(void)
> /* Register us to receive netdevice events */
> register_netdevice_notifier(&pktgen_notifier_block);
>
> - for_each_online_cpu(cpu) {
> + threads = num_online_cpus();
> +
> + /*
> + * Check if we should have less threads than the number
> + * of online CPUs
> + */
> + if ((pg_max_threads > 0) && (pg_max_threads < threads))
> + threads = pg_max_threads;
> +
> + for (i = 0; i < threads; i++) {
> int err;
> char buf[30];
>
> - sprintf(buf, "kpktgend_%i", cpu);
> - err = pktgen_create_thread(buf, cpu);
> + sprintf(buf, "kpktgend_%i", i);
> + err = pktgen_create_thread(buf, i);
> if (err)
> printk("pktgen: WARNING: Cannot create thread for cpu
> %d (%d)\n",
> - cpu, err);
> + i, err);
> }
>
> if (list_empty(&pktgen_threads)) {
> @@ -3263,4 +3273,5 @@ MODULE_LICENSE("GPL");
> module_param(pg_count_d, int, 0);
> module_param(pg_delay_d, int, 0);
> module_param(pg_clone_skb_d, int, 0);
> +module_param(pg_max_threads, int, 0);
> module_param(debug, int, 0);
> --
> 1.2.4.gbe76
>
>
>
> --
> Luiz Fernando N. Capitulino
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html