From owner-freebsd-threads@FreeBSD.ORG Thu Jun 19 16:16:47 2003 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B75AC37B401 for ; Thu, 19 Jun 2003 16:16:47 -0700 (PDT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1B4DF43FAF for ; Thu, 19 Jun 2003 16:16:47 -0700 (PDT) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.8/8.12.1) with ESMTP id h5JNGgXh010062; Thu, 19 Jun 2003 19:16:42 -0400 (EDT) Date: Thu, 19 Jun 2003 19:16:42 -0400 (EDT) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: Julian Elischer In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: threads@freebsd.org cc: Marcel Moolenaar Subject: Re: Implementing TLS: step 1 X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jun 2003 23:16:48 -0000 On Thu, 19 Jun 2003, Julian Elischer wrote: > > BTW Marcel, I think that we can get from where we are now with kse to > what we need by just a little massaging of what points to what. > it is possible that the register %gs could be pointed to the thread > structure directly and we could derive the KSE from that. it will just > make the context switches a fraction more expensive if we need to > change the segment register.. > > The big cost is that a processin x86 can only have a limited number of > segments set up in teh Local descriptor table (LDT). > I forget the actual number but i vaguely remember that it is 16383 or > 8191 or something.. A process could theoretically want to have > more than that numbe rof threads.. By pointing to the KSE we limit > ourselves to having to set up onl a small number of LDT entries > which is a big saving. Yes, and we can have thousands and thousands of threads. > On ia64 we don;t need to use descriptors so there is not that limit so > in effect we could point directly to the thread descriptor and let THAT > point to teh VCPU mailbox in question. it's just an extra write or two > at context switch time. I think we'll be just fine. It is not just that. It is the cost of an ldt allocation for each thread. In libkse, we only need as many LDTs as there are KSEs. Allocating an ldt per-thread increases thread startup and teardown. -- Dan Eischen