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 fs.ei.tum.de
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.

cheers
 simon
--
Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low €€€ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |   http://dragonflybsd.org      Against  HTML   \
Dude 2c 2 the max   !   http://golden-apple.biz       Mail + News   / \




More information about the Commits mailing list