2.4, 2.6, i686/athlon and LDT's

From: Tymm Twillman (ttwillman_at_penguincomputing.com)
Date: 12/27/04

  • Next message: Jan Engelhardt: "Re: [RFC] pid randomness"
    Date:	Mon, 27 Dec 2004 11:46:19 -0800
    To: linux-kernel@vger.kernel.org
    
    

    Hi all,

    I've some questions about LDT usage WRT threads. I'm working currently
    with 2.4 kernels (although will be moving to 2.6 relatively soon) and
    have had a lot of difficulty finding decent resources to adequately
    explain proper LDT usage (from really why they're used to the
    complexities of actually using them).

    Context here is process freezing/restoring and how to properly
    save/restore LDT entries for a given process -- with 2.4, glibc will
    call modify_ldt() whenever the pthreads library is linked in (regardless
    of whether threads are actually used, and regardless of whether there
    are multiple threads currently running) on i686/athlon platforms to set
    up a thread-specific storage area. (I'm not looking to save/restore all
    information for individual threads; that could get icky with multiple
    threads running).

    It appears that use of the LDT is to speed up context switching between
    threads, although I haven't even found especially good references WRT
    that. I have looked through the info in the IA Developers publications
    and have whacked my head against Google quite a bit. However, every bit
    of clarity I've found there has been offset by new confuzled bits.

    I also have found it's possible to compile glibc not to use LDT's on
    these platforms; does anyone have comparison information w/threads using
    LDT's and without (performance, protection, etc)?

    Also, 2.6 appears to have moved to a tss storage area attributed with
    each thread in the thread_struct... I'll be digging into that soon
    enough, but if anyone has quick information on comparing this to the 2.4
    tss mechanism I'd appreciate it; mainly regarding whether LDT's are
    involved and if there are any gotchas there, or if it's much simpler and
    doesn't need anything special to use. Also if it doesn't use LDT's,
    what's the performance impact in moving away from them?

    I'm not looking for information on saving/restoring processes outside
    the LDT-specific bits -- I'm set on pretty much everything else.

    Thanks for your time,

    -Tymm
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Jan Engelhardt: "Re: [RFC] pid randomness"