Messages in this thread | | | Date | Wed, 1 Jul 2009 01:18:22 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH -tip 3/3] kprobes: cleanup: use list instead of hlist for insn_pages |
| |
* Masami Hiramatsu <mhiramat@redhat.com> wrote:
> Ingo Molnar wrote: > > * Masami Hiramatsu <mhiramat@redhat.com> wrote: > > > >> Ingo Molnar wrote: > >>> * Masami Hiramatsu <mhiramat@redhat.com> wrote: > >>> > >>>> Use struct list instead of struct hlist for managing insn_pages, > >>>> because insn_pages doesn't use hash table. > >>>> struct kprobe_insn_page { > >>>> - struct hlist_node hlist; > >>>> + struct list_head list; > >>> Hm, you know that this increases the size of kprobe_insn_page by 4/8 > >>> bytes, right? > >> Sure, that will increase size. > >> > >>> hlists are not just used for hashes - but also when we want a more > >>> compact / smaller list head. > >> Oh, I thought hlists are used for hash tables... > > > > ... because they are smaller, hence the hash table of list > > heads becomes twice as dense as with list_head. > > > > But otherwise it's an (almost) equivalent primitive to list_head, > > with a slightly higher runtime cost versus better RAM footprint. > > > >>> How many kprobe_insn_page's can be allocated in the system, > >>> maximally? > >> It's depends on how many probes you will use, but logically, 1 > >> kprobe_insn_pages is allocated per 4096/16 = 256 probes. So, if > >> you use 25,600 probes on your system, memory consumption will > >> increase 400/800 bytes. > > > > it's your call really - just wanted to react on the 'because it > > should be used for hash tables' comment in the changelog. > > Hi Ingo, > > Would I might be misunderstood? > > struct list_head { > struct list_head *next, *prev; > }; > > struct hlist_node { > struct hlist_node *next, **pprev; > }; > > Both of list_head and hlist_node are the same size...
ahhh ... a light goes up: i read it as hlist_head, while it's hlist_node.
You are right, hlist_node is a needless complication so your cleanup is correct.
Ingo
| |