cvs commit: src/sys/ddb db_ps.c src/sys/kern init_main.c kern_exit.c kern_fork.c kern_resource.c kern_sig.c sys_generic.c src/sys/platform/pc32/i386 pmap.c src/sys/platform/vkernel/platform pmap.c src/sys/sys proc.h tree.h src/sys/vm vm_vmspace.c

Simon 'corecode' Schubert corecode at
Wed Aug 15 02:02:50 PDT 2007

Matthew Dillon wrote:
    There are several places where iterations are replaced with a nearly
    direct lookups.  None of these places scaled well to a linear list,
    and almost all of them are in critical paths.  rtprio, direct LWP
I think rtprio only for other threads setting the prio for a thread, not if the thread changes its own prio.

    signaling (such as the vkernel uses to send an IPI to another cpu),
Yes, that's bad.

    selrecord(), selwakeup(), and TID selection for newly forked threads.

    selrecord() was O(nthread*nfd).  Now it is O(nfd) like it was originally.
    selwakeup() was O(ioreadyrate*nthread*(nthread again if collisions occur)).
    Now it is O(ioreadyrate*(nthread if collisions occur)).
The problem is that sel*() is anyways O(nproc), because it only stores the PID and not the proc pointer.  So that is definitely an area for optimization.

Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low €€€ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |      Against  HTML   \
Dude 2c 2 the max   !       Mail + News   / \

More information about the Commits mailing list