SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Threads vs Processes
Andrew Tridgell
tridge@samba.org
“Aren't threads faster?”
● A very common question but a complex
answer
● Faster for what?
● What do threads/processes actually do?
● What can the hardware do?
● Systems programming
● Answering this question reveals a lot about systems
programming
● I hope it will also make you think a bit about how
operating systems work
What is a thread/process?
● An abstraction of a unit of execution
● We'll generically call them both 'tasks'
● What is in a task?
● Instructions to execute
● Memory (shared and non-shared)
● File descriptors
● Credentials
● Locks
● Network resources
● Relationship to CPUs
● Many/most computers have more than 1 CPU now
● It is common to have many tasks per CPU
The key differences
● Threads
● ???
● Processes
● ???
The key differences
● Threads
● Will by default share memory
● Will share file descriptors
● Will share filesystem context
● Will share signal handling
● Processes
● Will by default not share memory
● Most file descriptors not shared
● Don't share filesystem context
● Don't share signal handling
Underneath the hood
● On Linux, both processes and threads are
created with clone()
Creating a thread:
clone(child_stack=0x420cc260, flags=CLONE_VM|CLONE_FS|
CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|
CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
parent_tidptr=0x420cc9e0, tls=0x420cc950, child_tidptr=0x420cc9e0)
Creating a process:
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|
CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4936ecc770)
A Sample Workload
● A network media server
● Clients connect, and transfer images/videos/music
● Users login with their own accounts
● Files stored in a local filesystem
● What work needs to be done?
● ???
Network Media server ....
● What work needs to be done
● Computation: for format conversions etc
● Memory manipulation
● File IO
● Database access?
● Locking
● Network IO
● Credential handling
● Should it use threads?
malloc()
● Memory allocation
● Extremely common task in almost all programs
● What work needs to be done?
● ???
malloc()
● What work needs to be done?
● Possibly grab more pages from the OS
● Lock data structures?
● Find a free region
● Initialise a block header?
● Are locks needed?
● ???
malloc()
● Are locks needed?
● For threads, locks are needed for most data structure
manipulations in malloc()
● Kernel needs locks for page allocation
● Processes need no user space locks for malloc()
read()/write()
● What about file IO?
● is file IO different in threads vs processes?
● What does an OS need to do for file IO?
● ???
Hint: Common IO system calls
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
read()/write()
● What does an OS need to do for file IO?
● Map from file descriptor to file structure
● Copy data to/from page cache
● Possibly initiate disk IO
● How do you map from a fd to a file?
● Simple array? Tree structure?
● Either way, it needs locking
● With threads that can give contention
Hardware vs Software
● What about the MMU?
● Memory Management Unit
● Gives hardware memory protection between tasks
● Virtualises memory addressing
● Another way to look at things
● Threads use software to protect data structures
● Processes use hardware to protect data structures
thread_perf
● Threads vs processes benchmark
● http://samba.org/~tridge/junkcode/thread_perf.c
● Compares common tasks
● malloc, setreuid, readwrite, stat, fstat, create etc.
● Thread library
● Linking to a thread library can matter for processes!
setreuid()
● A very interesting case
● setreuid() used to change task credentials
● Posix requires change of all thread credentials
● Applications often want to change just one task
● thread_perf result
● setreuid() with threads over 200x slower on Linux
● Why??
Memory Footprint
● The memory hierarchy matters
● How much faster is memory than disk?
● What about cache memory vs main memory?
● Reducing memory footprint
● Allows more tasks to run
● May give better use of cache
● Threads
● Easier to pack structures in shared memory
● Less fragmentation of memory?
● May use less memory?
Conclusions
● Non-obvious choice
● Threads and processes have significant differences
● Which is best depends on the application
● Systems programming matters
● Think about the OS level implementation!
● Learn to use strace!

Contenu connexe

En vedette (6)

Operating system services 9
Operating system services 9Operating system services 9
Operating system services 9
 
Os structure
Os structureOs structure
Os structure
 
operating system structure
operating system structureoperating system structure
operating system structure
 
Virtualization
VirtualizationVirtualization
Virtualization
 
Virtualization presentation
Virtualization presentationVirtualization presentation
Virtualization presentation
 
OS Functions and Services
OS Functions and ServicesOS Functions and Services
OS Functions and Services
 

Similaire à Threads and processes

Introduction to Memoria
Introduction to MemoriaIntroduction to Memoria
Introduction to Memoria
Victor Smirnov
 

Similaire à Threads and processes (20)

CSE2010- Module 4 V1.pptx
CSE2010- Module 4 V1.pptxCSE2010- Module 4 V1.pptx
CSE2010- Module 4 V1.pptx
 
Active Data Stores at 30,000ft
Active Data Stores at 30,000ftActive Data Stores at 30,000ft
Active Data Stores at 30,000ft
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
 
08 operating system support
08 operating system support08 operating system support
08 operating system support
 
08 operating system support
08 operating system support08 operating system support
08 operating system support
 
Concept of thread
Concept of threadConcept of thread
Concept of thread
 
08 operating system support
08 operating system support08 operating system support
08 operating system support
 
Threads in Operating System | Multithreading | Interprocess Communication
Threads in Operating System | Multithreading | Interprocess CommunicationThreads in Operating System | Multithreading | Interprocess Communication
Threads in Operating System | Multithreading | Interprocess Communication
 
Threads - Why Can't You Just Play Nicely With Your Memory?
Threads - Why Can't You Just Play Nicely With Your Memory?Threads - Why Can't You Just Play Nicely With Your Memory?
Threads - Why Can't You Just Play Nicely With Your Memory?
 
Silverstripe at scale - design & architecture for silverstripe applications
Silverstripe at scale - design & architecture for silverstripe applicationsSilverstripe at scale - design & architecture for silverstripe applications
Silverstripe at scale - design & architecture for silverstripe applications
 
Processor Organization
Processor OrganizationProcessor Organization
Processor Organization
 
MongoDB: Advantages of an Open Source NoSQL Database
MongoDB: Advantages of an Open Source NoSQL DatabaseMongoDB: Advantages of an Open Source NoSQL Database
MongoDB: Advantages of an Open Source NoSQL Database
 
operating system
operating systemoperating system
operating system
 
Main Memory
Main MemoryMain Memory
Main Memory
 
The Accidental DBA
The Accidental DBAThe Accidental DBA
The Accidental DBA
 
Case study of BtrFS: A fault tolerant File system
Case study of BtrFS: A fault tolerant File systemCase study of BtrFS: A fault tolerant File system
Case study of BtrFS: A fault tolerant File system
 
Cloud accounting software uk
Cloud accounting software ukCloud accounting software uk
Cloud accounting software uk
 
Introduction to Memoria
Introduction to MemoriaIntroduction to Memoria
Introduction to Memoria
 
How to Monitor MySQL
How to Monitor MySQLHow to Monitor MySQL
How to Monitor MySQL
 
Five steps perform_2009 (1)
Five steps perform_2009 (1)Five steps perform_2009 (1)
Five steps perform_2009 (1)
 

Dernier

Porella : features, morphology, anatomy, reproduction etc.
Porella : features, morphology, anatomy, reproduction etc.Porella : features, morphology, anatomy, reproduction etc.
Porella : features, morphology, anatomy, reproduction etc.
Silpa
 
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 bAsymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Sérgio Sacani
 
POGONATUM : morphology, anatomy, reproduction etc.
POGONATUM : morphology, anatomy, reproduction etc.POGONATUM : morphology, anatomy, reproduction etc.
POGONATUM : morphology, anatomy, reproduction etc.
Silpa
 
Human genetics..........................pptx
Human genetics..........................pptxHuman genetics..........................pptx
Human genetics..........................pptx
Silpa
 
Reboulia: features, anatomy, morphology etc.
Reboulia: features, anatomy, morphology etc.Reboulia: features, anatomy, morphology etc.
Reboulia: features, anatomy, morphology etc.
Silpa
 
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune WaterworldsBiogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Sérgio Sacani
 
The Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptxThe Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptx
seri bangash
 
Phenolics: types, biosynthesis and functions.
Phenolics: types, biosynthesis and functions.Phenolics: types, biosynthesis and functions.
Phenolics: types, biosynthesis and functions.
Silpa
 

Dernier (20)

FAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
FAIRSpectra - Enabling the FAIRification of Spectroscopy and SpectrometryFAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
FAIRSpectra - Enabling the FAIRification of Spectroscopy and Spectrometry
 
Porella : features, morphology, anatomy, reproduction etc.
Porella : features, morphology, anatomy, reproduction etc.Porella : features, morphology, anatomy, reproduction etc.
Porella : features, morphology, anatomy, reproduction etc.
 
Site Acceptance Test .
Site Acceptance Test                    .Site Acceptance Test                    .
Site Acceptance Test .
 
Thyroid Physiology_Dr.E. Muralinath_ Associate Professor
Thyroid Physiology_Dr.E. Muralinath_ Associate ProfessorThyroid Physiology_Dr.E. Muralinath_ Associate Professor
Thyroid Physiology_Dr.E. Muralinath_ Associate Professor
 
Atp synthase , Atp synthase complex 1 to 4.
Atp synthase , Atp synthase complex 1 to 4.Atp synthase , Atp synthase complex 1 to 4.
Atp synthase , Atp synthase complex 1 to 4.
 
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 bAsymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
 
Human & Veterinary Respiratory Physilogy_DR.E.Muralinath_Associate Professor....
Human & Veterinary Respiratory Physilogy_DR.E.Muralinath_Associate Professor....Human & Veterinary Respiratory Physilogy_DR.E.Muralinath_Associate Professor....
Human & Veterinary Respiratory Physilogy_DR.E.Muralinath_Associate Professor....
 
Gwalior ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Gwalior ESCORT SERVICE❤CALL GIRL
Gwalior ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Gwalior ESCORT SERVICE❤CALL GIRLGwalior ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Gwalior ESCORT SERVICE❤CALL GIRL
Gwalior ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Gwalior ESCORT SERVICE❤CALL GIRL
 
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptxPSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
 
Zoology 5th semester notes( Sumit_yadav).pdf
Zoology 5th semester notes( Sumit_yadav).pdfZoology 5th semester notes( Sumit_yadav).pdf
Zoology 5th semester notes( Sumit_yadav).pdf
 
POGONATUM : morphology, anatomy, reproduction etc.
POGONATUM : morphology, anatomy, reproduction etc.POGONATUM : morphology, anatomy, reproduction etc.
POGONATUM : morphology, anatomy, reproduction etc.
 
Call Girls Ahmedabad +917728919243 call me Independent Escort Service
Call Girls Ahmedabad +917728919243 call me Independent Escort ServiceCall Girls Ahmedabad +917728919243 call me Independent Escort Service
Call Girls Ahmedabad +917728919243 call me Independent Escort Service
 
Human genetics..........................pptx
Human genetics..........................pptxHuman genetics..........................pptx
Human genetics..........................pptx
 
Reboulia: features, anatomy, morphology etc.
Reboulia: features, anatomy, morphology etc.Reboulia: features, anatomy, morphology etc.
Reboulia: features, anatomy, morphology etc.
 
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune WaterworldsBiogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
 
The Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptxThe Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptx
 
Genetics and epigenetics of ADHD and comorbid conditions
Genetics and epigenetics of ADHD and comorbid conditionsGenetics and epigenetics of ADHD and comorbid conditions
Genetics and epigenetics of ADHD and comorbid conditions
 
FAIRSpectra - Enabling the FAIRification of Analytical Science
FAIRSpectra - Enabling the FAIRification of Analytical ScienceFAIRSpectra - Enabling the FAIRification of Analytical Science
FAIRSpectra - Enabling the FAIRification of Analytical Science
 
Proteomics: types, protein profiling steps etc.
Proteomics: types, protein profiling steps etc.Proteomics: types, protein profiling steps etc.
Proteomics: types, protein profiling steps etc.
 
Phenolics: types, biosynthesis and functions.
Phenolics: types, biosynthesis and functions.Phenolics: types, biosynthesis and functions.
Phenolics: types, biosynthesis and functions.
 

Threads and processes

  • 1. Threads vs Processes Andrew Tridgell tridge@samba.org
  • 2. “Aren't threads faster?” ● A very common question but a complex answer ● Faster for what? ● What do threads/processes actually do? ● What can the hardware do? ● Systems programming ● Answering this question reveals a lot about systems programming ● I hope it will also make you think a bit about how operating systems work
  • 3. What is a thread/process? ● An abstraction of a unit of execution ● We'll generically call them both 'tasks' ● What is in a task? ● Instructions to execute ● Memory (shared and non-shared) ● File descriptors ● Credentials ● Locks ● Network resources ● Relationship to CPUs ● Many/most computers have more than 1 CPU now ● It is common to have many tasks per CPU
  • 4. The key differences ● Threads ● ??? ● Processes ● ???
  • 5. The key differences ● Threads ● Will by default share memory ● Will share file descriptors ● Will share filesystem context ● Will share signal handling ● Processes ● Will by default not share memory ● Most file descriptors not shared ● Don't share filesystem context ● Don't share signal handling
  • 6. Underneath the hood ● On Linux, both processes and threads are created with clone() Creating a thread: clone(child_stack=0x420cc260, flags=CLONE_VM|CLONE_FS| CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM| CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x420cc9e0, tls=0x420cc950, child_tidptr=0x420cc9e0) Creating a process: clone(child_stack=0, flags=CLONE_CHILD_CLEARTID| CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4936ecc770)
  • 7. A Sample Workload ● A network media server ● Clients connect, and transfer images/videos/music ● Users login with their own accounts ● Files stored in a local filesystem ● What work needs to be done? ● ???
  • 8. Network Media server .... ● What work needs to be done ● Computation: for format conversions etc ● Memory manipulation ● File IO ● Database access? ● Locking ● Network IO ● Credential handling ● Should it use threads?
  • 9. malloc() ● Memory allocation ● Extremely common task in almost all programs ● What work needs to be done? ● ???
  • 10. malloc() ● What work needs to be done? ● Possibly grab more pages from the OS ● Lock data structures? ● Find a free region ● Initialise a block header? ● Are locks needed? ● ???
  • 11. malloc() ● Are locks needed? ● For threads, locks are needed for most data structure manipulations in malloc() ● Kernel needs locks for page allocation ● Processes need no user space locks for malloc()
  • 12. read()/write() ● What about file IO? ● is file IO different in threads vs processes? ● What does an OS need to do for file IO? ● ??? Hint: Common IO system calls ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count);
  • 13. read()/write() ● What does an OS need to do for file IO? ● Map from file descriptor to file structure ● Copy data to/from page cache ● Possibly initiate disk IO ● How do you map from a fd to a file? ● Simple array? Tree structure? ● Either way, it needs locking ● With threads that can give contention
  • 14. Hardware vs Software ● What about the MMU? ● Memory Management Unit ● Gives hardware memory protection between tasks ● Virtualises memory addressing ● Another way to look at things ● Threads use software to protect data structures ● Processes use hardware to protect data structures
  • 15. thread_perf ● Threads vs processes benchmark ● http://samba.org/~tridge/junkcode/thread_perf.c ● Compares common tasks ● malloc, setreuid, readwrite, stat, fstat, create etc. ● Thread library ● Linking to a thread library can matter for processes!
  • 16. setreuid() ● A very interesting case ● setreuid() used to change task credentials ● Posix requires change of all thread credentials ● Applications often want to change just one task ● thread_perf result ● setreuid() with threads over 200x slower on Linux ● Why??
  • 17. Memory Footprint ● The memory hierarchy matters ● How much faster is memory than disk? ● What about cache memory vs main memory? ● Reducing memory footprint ● Allows more tasks to run ● May give better use of cache ● Threads ● Easier to pack structures in shared memory ● Less fragmentation of memory? ● May use less memory?
  • 18. Conclusions ● Non-obvious choice ● Threads and processes have significant differences ● Which is best depends on the application ● Systems programming matters ● Think about the OS level implementation! ● Learn to use strace!