Path: utzoo!attcan!uunet!samsung!think!bbn!bbn.com!chowe From: chowe@bbn.com (Carl Howe) Newsgroups: comp.sys.sequent Subject: Re: timing parallel programs Message-ID: <52715@bbn.COM> Date: 27 Feb 90 16:27:45 GMT References: <1324@csisles.Bristol.AC.UK> <1803@baird.cs.strath.ac.uk> <11171@encore.Encore.COM> <67411@aerospace.AERO.ORG> <2151@baird.cs.strath.ac.uk> Sender: news@bbn.COM Reply-To: chowe@labs-n.bbn.com (Carl Howe) Followup-To: comp.parallel Organization: Bolt Beranek and Newman Inc., Cambridge MA Lines: 48 In article <2151@baird.cs.strath.ac.uk> jim@cs.strath.ac.uk writes: >In article <67411@aerospace.AERO.ORG> carl@altair.UUCP (Carl Kesselman) writes: >>No, no no. The responses being sent are wrong. How about RTFM. There >>is a facility called tmp_affinity. You can use this to ensure that a >>process runs on a specific processor. > >Yes, but that is not much help to the person who posed the initial >question. They were looking for a way to *exclusively* dedicate a >processor (or bunch of processors) to a particular process. The >tmp_affinity() system call does not provide this facility. It can bind >a process to a particular processor, but does not prevent another >process from also being bound to that processor or for the processor to >be given over to interrupt servicing and related kernel processing. If >the processor had to switch from the process that was being timed, the >benchmark results would be inconsistent and possibly non-reproducible. > >I understand that Encore provide this capability on their boxes, so maybe >DYNIX will get it some day. > I apologize in advance if this is too far off the topic of Sequent computers, but since you already brought up one other vendor, I thought I'd just mention an implementation of both capabilities. The facility that you both are describing exists in nX, the UNIX OS for the BBN Advanced Computers' multiprocessors. Affiliating a process with a processor is done via a "fork_and_bind" system call. Dedication of processors to processes is done via a facility called "clusters", which are dynamically created and destroyed. When user's originally log in, they work in a public cluster of processors, but if they want a dedicated set of processors to run a program, they can use the command, cluster <#processors> to get such a cluster. The processors for this cluster are allocated out of a free pool and will be returned to the pool after the execution of the command. We use this type of facility all the time for benchmarking and characterizing multiprocessor programs without disrupting the work of other users. No special privileges are required. There are a few descriptions of this facility in the literature if you are interested in more details. I apologize in advance that I can't quote them here because my office is currently packed in boxes. Email me if you would like them when I get unpacked. If people would like to discuss or post regarding this further, we should probably move to comp.parallel. Carl chowe@bbn.com.