Top Banner
1 1 CS 5523 Operating Systems: Thread and Implementation Department of Computer Science @ UTSA Instructor: Dr. Tongping Liu Thank Dr. Dakai Zhu, Dr. Palden Lama, and Dr. Tim Richards (UMASS) for providing their slides. 2 Outline Motivation and thread basics Ø Resources requirements: thread vs. process Thread implementations Ø User threads: e.g., Pthreads and Java threads Ø Kernel threads: e.g., Linux tasks Ø Map user- and kernel-level threads Ø Lightweight process and scheduler activation Other issues with threads: process creation and signals etc. Threaded programs Ø Thread pool Ø Performance vs. number of threads vs. CPUs and I/Os Department of Computer Science @ UTSA 3 Traditional Process: Single Activity Multi-programming Ø More processes share CPU One process: address space to hold process image Ø System resources, e.g., files, I/O devices Execution states Ø Processor registers (e.g., PC register) Ø Protection mode (user/kernel) Ø Priority Single activity à single thread User Stack kernel Stack Process Control Block address space Single-threaded process Department of Computer Science @ UTSA 4 Example: A Text Editor with Multi-Activity Process approach on data Ø P1: read from keyboard Ø P2: format document Ø P3: write to disk Kernel When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation. We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.--That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, --That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all How do the processes exchange data? The processes will access the same set of data. Department of Computer Science @ UTSA Context Switch for Processes - costly
13

Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

Sep 06, 2018

Download

Documents

ngotuyen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

1

1

CS 5523 Operating Systems: Thread and Implementation

Department of Computer Science @ UTSA

Instructor: Dr. Tongping Liu

Thank Dr. Dakai Zhu, Dr. Palden Lama, and Dr. Tim Richards (UMASS) for providing their slides.

2

Outline

❚  Motivation and thread basics Ø Resources requirements: thread vs. process

❚  Thread implementations Ø User threads: e.g., Pthreads and Java threads Ø Kernel threads: e.g., Linux tasks Ø Map user- and kernel-level threads Ø  Lightweight process and scheduler activation

❚  Other issues with threads: process creation and signals etc. ❚  Threaded programs

Ø  Thread pool Ø Performance vs. number of threads vs. CPUs and I/Os

Department of Computer Science @ UTSA

3

Traditional Process: Single Activity

❚  Multi-programming Ø More processes share CPU

❚  One process: address space to hold process image Ø System resources, e.g., files, I/O devices

❚  Execution states Ø Processor registers

(e.g., PC register) Ø Protection mode (user/kernel) Ø Priority

❚  Single activity à single thread

UserStack

kernelStack

ProcessControlBlock

address space

Single-threaded process

Department of Computer Science @ UTSA 4

Example: A Text Editor with Multi-Activity

❚  Process approach on data Ø P1: read from keyboard Ø P2: format document Ø P3: write to disk

Kernel"

When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.

We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.--That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, --That whenever any Form of Government becomes

destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all

How do the processes �exchange data?

The processes will access �the same set of data.

Department of Computer Science @ UTSA

Context Switch for Processes - costly

Page 2: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

2

5

Context Switches of Processes: Expensive

❚  Context switch between processes Ø Save processor registers for current process Ø Load the new process’s registers

❚  Switch address spaces – expensive Ø Hardware cache Ø Memory pages (e.g., TLB content)

Department of Computer Science @ UTSA 6

Ideal Solution for the Example: Threads

Kernel"

When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.

We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.--That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, --That whenever any Form of Government becomes

destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all

❚  Three activities within one process Ø Single address space Ø Same execution environment Ø Data shared easily

❚  Switch between activities Ø Only running context Ø No change in address

space

Department of Computer Science @ UTSA

7

Thread vs. Process

Department of Computer Science @ UTSA

❚  Responsiveness Ø Part of blocked

❚  Resource Sharing Ø Memory, open files,

etc.

❚  Economy Ø Creation and switches

❚  Scalability Ø Increase parallelism

Process: Traditional View

❚  Process = process context + code, data, and stack

sharedlibraries

run-.meheap

0

read/writedata

Programcontext:DataregistersCondi.oncodesStackpointer(SP)Programcounter(PC)

Code,data,andstack

read-onlycode/data

stackSP

PC

brk

Processcontext

Kernelcontext:VMstructuresDescriptortablebrkpointer

Page 3: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

3

Process: Alternative View

❚  Process = thread + code, data, and kernel context

sharedlibraries

run-.meheap

0

read/writedata

Programcontext:DataregistersCondi.oncodesStackpointer(SP)Programcounter(PC)

Code,data,andkernelcontext

read-onlycode/data

stackSP

PC

brk

Thread

Kernelcontext:VMstructuresDescriptortablebrkpointer

Process with Two Threads

sharedlibraries

run-.meheap

0

read/writedata

Programcontext:DataregistersCondi.oncodesStackpointer(SP)Programcounter(PC)

Code,data,andkernelcontext

read-onlycode/datastackSP PC

brk

Thread1

Kernelcontext:VMstructuresDescriptortablebrkpointer

Programcontext:DataregistersCondi.oncodesStackpointer(SP)Programcounter(PC)

stackSP

Thread2

Threads vs. Processes

❚  Threads and processes: similarities Ø Each has its own logical control flow Ø Each can run concurrently with others Ø Each is context switched (scheduled) by the kernel

❚  Threads and processes: differences Ø Threads share code and data, processes (typically) do not Ø Threads are less expensive than processes

ü Process control (creation and exit) is more expensive as thread control ü Context switches: processes are more expensive than for threads

Pros and Cons of Thread-Based Designs ❚  + Easy to share data structures between threads

Ø e.g., logging information, file cache

❚  + Threads are more efficient than processes

❚  – Unintentional sharing can introduce subtle and hard-to-reproduce errors!

Page 4: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

4

13

Thread Implementations: Issues

❚  Process usually starts with a single thread ❚  Thread management: required operations

Ø Creation: procedure/method for the new thread to run Ø Scheduling: runtime properties/attributes Ø Destruction: release resources

❚  Thread Synchronization Ø join, wait, etc.

❚  Who and where to manage threads Ø User space: managed by applications Ø Kernel space: managed by OS

ü all modern OSes have kernel level support

Department of Computer Science @ UTSA

Multithreading Models: Many-to-One

❚  Many user-level threads mapped to a single kernel thread ❚  Examples:

Ø Solaris Green Threads Ø GNU Portable Threads

Many-to-One Model

Pros: •  Cheap synchronization and

cheap thread creation

Cons:

•  Blocking-problem. A thread calling block system call will block the whole process

•  No concurrency.

Multithreading Models: One-to-One

❚  Each user-level thread maps to kernel thread ❚  Examples

Ø Windows NT/XP/2000 Ø Linux Ø Solaris 9 and later

Page 5: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

5

One-to-one Model

Pros: •  Scalable parallelism (concurrency) •  Thread will not block a whole process

Cons: •  Expensive synchronization (system call

is required if a lock can’t be acquired) •  Expensive creation (3.5 slower) •  Kernel resource, e.g. stack and kernel

structure

Multithreading Models: Many-to-Many Model

❚  Allows many user level threads to be mapped to many kernel threads

❚  Allows the operating system to create a sufficient number of kernel threads

❚  Solaris prior to version 9 ❚  Windows NT/2000 with the ThreadFiber package

Many-to-Many Model

Pros: •  Cheap Resource, not all user threads should create a kernel thread •  Synchronization mainly at user-level •  Context switch may not involve system calls

Cons: •  Difficult cooperation between kernel

scheduler and user scheduler •  How to decide the number of kernel

threads?

Thread Libraries

❚  Provide programmers with API for creating and managing threads

❚  Two primary ways of implementing Ø User-level library

ü Entirely in user space ü Everything is done using function calls (not system calls)

Ø Kernel-level library supported by the OS ü Code and data structures for threads are in kernel space ü Function calls result in system calls to kernel

❚  Examples: Ø POSIX Threads: Pthreads Ø Java threads (JVM uses host system threads)

Department of Computer Science @ UTSA 20

Page 6: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

6

21

Pthreads: POSIX Thread

❚  POSIX Ø Portable Operating System Interface [for Unix] Ø Standardized programming interface

❚  Pthreads Ø Thread implementations adhering to POSIX standard Ø API specifies behavior of the thread library: defined as a

set of C types and procedure calls Ø Common in UNIX OS (Solaris, Linux, Mac OS X)

❚  Support for thread creation and synchronization

Department of Computer Science @ UTSA 22

Pthreads:Thread/Synchronization APIs

Thread Call Description pthread_create Create a new thread in the caller’s address space

pthread_exit Terminate the calling thread

pthread_join Wait for a thread to terminate

pthread_mutex_init Create a new mutex pthread_mutex_destroy Destroy a mutex

pthread_mutex_lock Lock a mutex pthread_mutex_unlock Unlock a mutex

pthread_cond_init Create a condition variable

pthread_cond_destroy

Destroy a condition variable

pthread_cond_wait

Wait on a condition variable

pthread_cond_signal Release one thread waiting on a condition variable

Department of Computer Science @ UTSA

23

Pthreads APIs: Four Groups

❚  Thread management Ø Routines for creating, detaching, joining, etc. Ø Routines for setting/querying thread attributes

❚  Mutexes: abbreviation for "mutual exclusion" Ø Routines for creating, destroying, locking/unlocking Ø  Functions to set or modify attributes with mutexes.

❚  Conditional variables Ø Communications for threads that share a mutex Ø  Functions to create, destroy, wait and signal based on specified

variable values Ø  Functions to set/query condition variable attributes

❚  Synchronization Ø Routines that manage read/write locks and barriers

Department of Computer Science @ UTSA 24

Thread Creation

pthread_t threadID; pthread_create (&threadID, *attr, methodName, *para);

❚  1st argument is the ID of the new thread ❚  2nd argument is a pointer to pthread_attr_t ❚  3rd argument is thread (function/method) name ❚  4th argument is a pointer to the arguments for the

thread’s method/function

Department of Computer Science @ UTSA

Page 7: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

7

25

An Example: testthread.c // testthread.c#define NUM_THREADS3… …int main(int argc, char *argv[]){ pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0;t<NUM_THREADS;t++){ printf("In main: creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d\n", rc); exit(-1); } }//to return value; use pthread_join() wait for other thread; and then return …}

Department of Computer Science @ UTSA 26

An Example (cont.)

#include <pthread.h>#include <stdio.h>#include <stdlib.h>#define NUM_THREADS5void *PrintHello(void *threadid){ long tid; tid = (long)threadid; printf("Hello World! It's me, thread #%ld!\n", tid); pthread_exit(NULL);}int main(int argc, char *argv[]){

……}

Department of Computer Science @ UTSA

27

Thread joins and exits

❚  Join with a non-detached thread by using pthread_join ( pthread_t thread, void **status) (All threads are created non-detached by default, so

they are “joinable” by default) ❚  Exit from threads:

Ø If threads use exit( ), process terminates. Ø A thread (main, or another thread ) can exit by calling

pthread_exit( ), this does not terminate the whole process.

❚  More information about Pthread programming Ø https://computing.llnl.gov/tutorials/pthreads/

Department of Computer Science @ UTSA

void pthread_exit(void *retval);

❚  Not necessary for normal exits ❚  Some special cases:

Ø Allows you to exit a thread from any depth in the call stack and return a value via retval

Ø pthread_exit() can terminate your main function and thread in a controlled way, but not terminating other threads. (NOT recommended)

Department of Computer Science @ UTSA 28

Page 8: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

8

29

Linux Threads

❚  Linux uses the term task (rather than process or thread) when referring to a flow of control

❚  Linux provides clone() system call to create threads Ø A set of flags, passed as arguments to the clone() system

call determine how much sharing is involved (e.g. open files, memory space, etc.)

❚  Linux: 1-to-1 thread mapping Ø NPTL (Native POSIX Thread Library)

Department of Computer Science @ UTSA 30

Other Issues: Process Creation in Thread

❚  What will happen if one thread in a process call fork( ) to create a new process? Ø How many threads in the new process?

❚  Duplicate only the invoking thread Ø exec(): will load another program Ø Everything will be replaced anyway

❚  Duplicate all threads Ø What about threads performed blocking system call?!

Department of Computer Science @ UTSA

31

Using Pthread Library

❚  In the program: Ø #include <pthread.h>

❚  To compile, link with the pthread library

❚  Linux Ø gcc –lpthread // C Ø g++ -lpthread // C++

gcc testthread.c -o test –lpthread

Department of Computer Science @ UTSA

Midterm’s results

❚  Minimum Value 65.00 ❚  Maximum Value 106.50 ❚  Average 93.54 ❚  Median 96.00

Department of Computer Science @ UTSA 32

Page 9: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

9

Shared Variables in Threaded C Programs ❚  Question: Which variables in a threaded C program

are shared? Ø The answer is not as simple as “global variables are

shared” and “stack variables are private”

❚  Requires answers to the following questions: Ø What is the memory model for threads? Ø How are variables mapped to memory? Ø How many threads might reference each variable?

❚  A variable x is shared if and only if multiple threads reference some instance of x

Threads Memory Model

❚  Conceptual model: Ø Multiple threads run in the same context of a process Ø Each thread has its own separate thread context

ü Thread ID, stack, stack pointer, PC, and GP registers

Ø All threads share the remaining process context ü Code, data, heap, and shared library segments ü Open files and installed handlers

❚  Operationally, this model is not strictly enforced: Ø Register values are truly separate and protected, but… Ø Any thread can read and write the stack of any other

thread

Process with Two Threads

sharedlibraries

run-.meheap

0

read/writedata

Programcontext:DataregistersCondi.oncodesStackpointer(SP)Programcounter(PC)

Code,data,andkernelcontext

read-onlycode/datastackSP PC

brk

Thread1

Kernelcontext:VMstructuresDescriptortablebrkpointer

Programcontext:DataregistersCondi.oncodesStackpointer(SP)Programcounter(PC)

stackSP

Thread2

Example Program to Illustrate Sharing

char **ptr; /* global */ int main() { int i; pthread_t tid; char *msgs[2] = { "Hello from foo", "Hello from bar" }; ptr = msgs; for (i = 0; i < 2; i++) Pthread_create(&tid, NULL, thread, (void *)i); Pthread_exit(NULL); }

/* thread routine */ void *thread(void *vargp) { int myid = (int) vargp; static int cnt = 0; printf("[%d]: %s (svar=%d)\n", myid, ptr[myid], ++cnt); }

Peer threads reference main thread’s stack indirectly through global ptr variable

Page 10: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

10

Mapping Variable Instances to Memory

❚  Global variables Ø Def: Variable declared outside of a function Ø Virtual memory contains exactly one instance of any global variable

❚  Local variables Ø Def: Variable declared inside function without static attribute Ø Each thread stack contains one instance of each local variable

❚  Local static variables Ø Def: Variable declared inside function with the static attribute Ø Virtual memory contains exactly one instance of any local static variable.

Mapping Variable Instances to Memory

char **ptr; /* global */ int main() { int i; pthread_t tid[2]; char *msgs[2] = { "Hello from foo", "Hello from bar" }; ptr = msgs; for (i = 0; i < 2; i++) Pthread_create(&tid[i], NULL, thread, (void *)i); ……. }

/* thread routine */ void *thread(void *vargp) { int myid = (int)vargp; static int cnt = 0; printf("[%d]: %s (svar=%d)\n", myid, ptr[myid], ++cnt); }

Globalvar:1instance(ptr [data])

Localsta9cvar:1instance(cnt [data])

Localvars:1instance(i.m, msgs.m)Localvar:2instances(myid.p0 [peerthread0’sstack], myid.p1 [peerthread1’sstack])

sharing.c!

Mapping Variable Instances to Memory

char **ptr; /* global */ int main() { int i; pthread_t tid; char *msgs[2] = { "Hello from foo", "Hello from bar" }; ptr = msgs; for (i = 0; i < 2; i++) Pthread_create(&tid, NULL, thread, (void *)i); ……. }

/* thread routine */ void *thread(void *vargp) { int myid = (int)vargp; static int cnt = 0; printf("[%d]: %s (svar=%d)\n", myid, ptr[myid], ++cnt); }

Globalvar:1instance(ptr [data])

Localsta9cvar:1instance(cnt [data])

Localvars:1instance(i.m, msgs.m)Localvar:2instances(myid.p0 [peerthread0’sstack], myid.p1 [peerthread1’sstack])

sharing.c!

VariableReferencedby Referencedby Referencedbyinstancemainthread? peerthread0? peerthread1?

ptr cnt i.m msgs.m myid.p0 myid.p1

yes yes yesno yes yesyes no noyes yes yesno yes nono no yes

Shared Variable Analysis

❚  Which variables are shared?

❚  Answer: A variable x is shared iff multiple threads reference at least one instance of x. Thus: n ptr, cnt, and msgs are shared n i and myid are not shared

VariableReferencedby Referencedby Referencedbyinstancemainthread? peerthread0? peerthread1?

ptr cnt i.m msgs.m myid.p0 myid.p1

yes yes yesno yes yesyes no noyes yes yesno yes nono no yes

Page 11: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

11

41

Multithreaded Programs

❚  Use multiple threads to improve performance

Server

N threads

Input-output

Client

Thread 2 makes

T1

Thread 1

requests to server

readsrequests

Requests

Receipt & queuing

How should the server handle �the incoming requests?

Department of Computer Science @ UTSA 42

Thread Pool

❚  Pool of threads Ø Threads in a pool where they wait for work

❚  Advantages: Ø Usually slightly faster to service a request with an

existing thread than create a new thread Ø Allows the number of threads in the application(s) to

be bound to the size of the pool ❚  Adjust thread number in pool

Ø According to usage pattern and system load

Department of Computer Science @ UTSA

43

Thread Pool Example: Web server

Kernel"

Networkconnection"

Dispatcherthread"

Workerthread"

Web page cache"

while(TRUE) { getNextRequest(&buf); handoffWork(&buf);}

while(TRUE) { waitForWork(&buf); lookForPageInCache(&buf,&page); if(pageNotInCache(&page)) { readPageFromDisk(&buf,&page); } returnPage(&page);}

Department of Computer Science @ UTSA

Thread Pool Implementation

44

❚  Work queue Ø Fixed number of threads

❚  Other possible problems Ø Deadlock Ø Resource thrashing Ø Thread leakage Ø Overload

Department of Computer Science @ UTSA

Page 12: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

12

45

Performance of Threaded Programs

❚  Suppose that the processing of each request Ø Takes X seconds for computation; and Ø Takes Y seconds for reading data from I/O disk

❚  For single-thread program/process Ø A single CPU & single disk system Ø What is the maximum throughput (i.e., the number of

requests can be processed per second)?

Department of Computer Science @ UTSA

Example: suppose that each request takes 2ms for computation 8ms to read data from disk

Throughput: 1000/10ms = 100

46

Performance of Threaded Programs (cont)

❚  Multi-thread performance improvement Ø Multiple CPU & multiple disk system Ø How many threads should be used? Ø What is the maximum throughput (i.e., the number of

requests can be processed per second)?

Department of Computer Science @ UTSA

Example: suppose that each request takes 2ms for computation 8ms to read data from disk

Assuming that we have 8 cores and 1 disk

Throughput: 1000/8ms = 125�Threads: 2

47

Issues about Performance

❚  When I/O disk is bottleneck, adding more CPUs will NOT help improve the throughput

❚  How to handle general situations with multiple disks and CPUs?

48

Performance of Threaded Programs (cont)

❚  What about m-CPU and n-disk system Ø Maximum throughput and # of threads? (X: computation,

Y: IO for each task) Ø Throughput à 1 / max(X/m, Y/n) Ø if (X/m < Y/n) , # = n + m’

where m’ = min{k| X/k <= Y/n, 1<=k<=m};

IO is the bottleneck

n: the number of threads can consume all IO (bottleneck)m’: the number of threads that can provide tasks for IO:X/k <= Y/n indicates that the computation should not be bottleneck.1<=k<=m should be larger than 1, otherwise, no parallel. k <= m (# of cpus)min indicates that having more threads won’t increase the performance.

Page 13: Outline CS 5523 Operating Systems: Thread and ...tongpingliu/teaching/cs5523/handouts/lecture-03... · CS 5523 Operating Systems: Thread and Implementation Department of Computer

13

49

Performance of Threaded Programs (cont)

❚  What about m-CPU and n-disk system Ø Maximum throughput and # of threads? (X: computation,

Y: IO for each task) Ø Throughput à 1 / max(X/m, Y/n) Ø if (X/m < Y/n) , # = n + m’

where m’ = min{k| X/k <= Y/n, 1<=k<=m};

Ø if (X/m > Y/n), # = m + n’ where n’ = min{k| X/m>= Y/k, 1<=k<=n};

IO is the bottleneck

n: the number of threads can consume all IO (bottleneck)m’: the number of threads that can provide tasks for IO:X/k <= Y/n indicates that the computation should not be bottleneck.1<=k<=m should be larger than 1, otherwise, no parallel. k <= m (# of cpus)min indicates that having more threads won’t increase the performance.

50

Summary

❚  Thread basics Ø Resources requirements: thread vs. process

❚  Thread implementations Ø User threads: e.g., Pthreads and Java threads Ø Kernel threads: e.g., Linux tasks Ø Map user- and kernel-level threads Ø  Lightweight process and scheduler activation

❚  Other issues with threads Ø  process creation and signals etc.

❚  Threaded programs Ø  Thread pool Ø Performance vs. number of threads vs. CPUs and I/Os

Department of Computer Science @ UTSA

51

For next lecture

❚  Concurrency and Synchronization Ø SGG Chapters 6 and 7 Ø TS Chapter 6

Department of Computer Science @ UTSA