Thread outline What is thread?

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Process Synchronization
Advertisements

กระบวนการ (Process).
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
โครงสร้างของกระบวนการ
Examining the Code.
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
Chapter 3 Simple Supervised learning
Introduction to Server Services
Java Network Programming – Network Operating Systems and Protocols Choopan Rattanapoka.
Superior COmmunications Research and Prototyping for commercialization นายลูกา เนตรเนรมิตร กลุ่มที่ 3 ส่วนประมวลผลสัญญาณ ดิจิตอลเบสแบนด์ SCORPion Research.
เนื้อหาที่จะเรียน คอมพิวเตอร์คืออะไร ระบบคอมพิวเตอร์ ส่วนประกอบของเครื่องคอมพิวเตอร์ ระบบปฏิบัติการ อินเตอร์เน็ต Microsoft Office.
Page : Stability and Statdy-State Error Chapter 3 Design of Discrete-Time control systems Stability and Steady-State Error.
Saving Cost Connection
การสื่อสารข้อมูล.
Chapter 8: Single-Area OSPF
ระบบคอมพิวเตอร์.
ศูนย์ข้อมูลกลางเพื่อบริหารจัดเก็บและใช้ประโยชน์
ว่าที่ ร.ต.หญิงวรรณธิดา วรสุทธิพงษ์ ครูแผนกวิชาคอมพิวเตอร์ธุรกิจ
U C S m a r t Smart Organizing Solution by Unified Communication
หน่วยที่ 3 องค์ประกอบของคอมพิวเตอร์
Chapter 12 Microprocessor without Interlocked Pipeline Stages (MIPS)
Thread.
Crowded Cloud e-services: Trust and Security
บทที่ 5 การจัดการแฟ้มข้อมูล
Intel Quick Path (QPI).
การทดสอบซอฟต์แวร์ Software Testing
การใช้งานเครื่องแม่ข่ายเสมือน (Virtual Server-VMWARE) มหาวิทยาลัยสงขลาครินทร์ Server Admin, ISD CC PSU.
เครือข่ายคอมพิวเตอร์
Toward National Health Information System
ฮาร์ดแวร์และยูทิลิตี้เบื้องต้น
การติดต่อสื่อสารของคอมพิวเตอร์
บทที่ 5 แบบจำลองกระบวนการ
คอมพิวเตอร์คืออะไร      คอมพิวเตอร์เป็นองค์ประกอบหนึ่งของเทคโนโลยีสารสนเทศที่เอื้อประโยชน์ต่อการแสวงหาสารสนเทศ เป็นอุปกรณ์อิเล็กทรอนิกส์ ที่สามารถรับโปรแกรมและข้อมูล.
บทที่ 5 ระบบปฏิบัติการเครือข่าย
เทคโนโลยีสารสนเทศเพื่อการศึกษาค้นคว้า Information Technology for Study Skill 01/12/61.
อินเทอร์เน็ตเบื้องต้น
CPE 332 Computer Engineering Mathematics II
Information and Communication Technology Lab2
ความรู้พื้นฐานการเขียนโปรแกรม
สื่อการสอนรายวิชา ง30204 โปรแกรมภาษาชี ภาษาคอมพิวเตอร์และโปรแกรม
การวิเคราะห์ซอฟต์แวร์
คอมพิวเตอร์เบื้องต้น
DEADLOCKS Advanced Operating System Operating System Technology
การออกแบบระบบ System Design.
อาจารย์ชนิดา เรืองศิริวัฒนกุล หลักสูตรสาขาวิชาเทคโนโลยีสารสนเทศ
Operating System Overview
Computer Systems ผู้สอน ชัชวิทย์ อาภรณ์เทวัญ
Object-Oriented Programs Design and Construction
UML (Unified Modeling Language)
JSON API Pentaho User Manual.
Multimedia Production
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
Development Strategies
การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 3 การจัดการหน่วยความจำ (Memory Management)
Bios & Chipset.
การเขียนซูโดโค้ด และการเขียนโฟลชาร์ต
หน่วยความจำหลัก (Main Memory)
ขั้นตอนการเขียนโปรแกรมคอมพิวเตอร์
TOT e-Conference Bridge to Talk : Simple & Clear.
บทที่ 3 กระบวนการผลิตซอฟต์แวร์ (Software Process)
บทที่ 2 เทคโนโลยีคอมพิวเตอร์
องค์ประกอบของคอมพิวเตอร์ และภาษาซี
Textbooks Chapter 1: Introduction เขียนโปรแกรมที่มี GUI บน Windows เช่น XO Chapter 2: Operating-System Structures ติดตั้ง Linux ใน vm / cloud /
CPU and I/O bursts.
Memory Management Ex. C = A + B A typical instruction-execution cycle
บทที่ 5 การให้บริการโครงสร้างพื้นฐานInfrastructure as a service (IaaS)
Virtual Memory Why? The need of memory more than the available physical memory. Process 3 Physical Memory Process 2 Process 1 Process 4.
บทที่ 2 ระบบเครือข่ายและอินเทอร์เน็ต
ใบสำเนางานนำเสนอ:

Thread outline What is thread? User-level thread / Kernel thread / Hardware thread Simultaneous multi-treading (SMT or HT), Multi-core Multi-threading model: many-to-one, one-to-one, many-to-many Thread libraries: Pthreads, Win32, Java, .NET Thread pools Windows XP / Linux threads Homework: server/client (Java), matrix multiplication (Pthreads)

Threads Thread is light-weight process. Single-threaded process vs. multi-threaded process (Figure 4.1, p. 154) Benefits: responsiveness, resource sharing, economy, scalability Multi-core programming (Figure 4.3 – 4.4, p. 156). Challenges: dividing activities, balance, data splitting, data dependency, testing and debugging Multi-threading models: user-level vs. kernel-level threads M:1, 1:1, M:N (Figure 4.5 – 4.7, p. 157) อ่านใน textbook

Kernel vs. User-level threads Process หมด time slice I/O block P1 CPU scheduling P2 CPU scheduling ใช้ CPU scheduling ของ OS เราไม่สามารถควบคุม CPU scheduling ได้ 100% แต่อาจจะกำหนด priority คร่าวๆ ได้ กินทรัพยากรระบบมาก และ 1 thread อาจจะได้ time slice เท่า 1 process ถ้า spawn thread ออกมามาก ก็ยิ่งโหลด CPU มาก เครื่องอาจจะ hang Kernel thread I/O block T1 CPU scheduling T2 CPU scheduling P2 Process P1 เอา time slice ของ process มาแบ่งใช้เอง ใช้ CPU scheduling ของ thread library I/O block จะทำให้เกิด context switch ไป process ต่อไปทันที ระวัง thread ในบางภาษาเป็น user-level thread เช่น Python User-level thread I/O block T1 CPU scheduling P2 ข้อดีของ user-level thread คือใช้ได้กับทุก OS แต่จะไม่ได้ performance เพิ่มขึ้น

C#, Java http://msdn.microsoft.com/en-us/library/aa365683(VS.85).aspx Node.js

User-level thread หรือ Green thread example (obsolete!) Java 1.1 on Solaris (ใช้ multi-core ไม่ได้ และอาจจะทำ thread อื่นรวมถึง JVM หยุดไปด้วย ถ้าเจอ I/O block) Ruby < 1.9 CPython http://en.wikipedia.org/wiki/Green_threads Web browsers Firefox, Safari one process (many threads) Chrome many processes (per site instance) C:\Users\Chatchawit\AppData\Local\Google\Chrome\Application\chrome.exe 4 process models Process-per-site-instance (default) Process-per-site --process-per-site Process-per-tab --process-per-tab Single process --single-process เหมือน Firefox, Safari http://www.chromium.org/developers/design-documents/

เพิ่มคอลัมน์ Threads ใน Task Manager (เพื่อดูจำนวน kernel thread ของแต่ละ process)

Hyperthreading vs. Multi-core Physical vs. Logical processor เพิ่มฮาร์ดแวร์เพื่อหลอกให้ OS เข้าใจว่ามี processor มากกว่า 1 ตัว (จริงๆ มีตัวเดียว) เช่น เพิ่ม pc และ registers เป็น 2 ชุด CPU scheduling ต้องหา thread มาเติม ตามจำนวน logical processor ที่มี T1 OS T2 OS T1 OS T2 Single core ใช้ SW (OS) ในการทำ context switch thread มักจะติด I/O block แล้วก็ต้องทำ context switch ดังนั้นใส่ thread เข้าไป 2 ตัวเลย (แต่มี core เดียว) พอติด I/O block ก็ switch เร็วๆ เพื่อไปทำอีก thread นึง 1 physical processor 2 logical processors T1 T2 T1 T2 Hyperthreading รอดู slide บทถัดไป จะละเอียดกว่านี้ ใช้ HW ในการทำ context switch ระหว่าง 2 thread ทำให้โปรแกรมโดยรวมเร็วขึ้น 20-30% (เนื่องจากมี pc และ registers 2 ชุด ทำให้ switch ได้เกือบจะทันที) T1 Multi-core + hyperthreading T2 T3 T4

CPU 2 ตัว เป็น quad-core แต่ละ core เป็น hyper-threading (set ใน BIOS)

Disable hyper-threading

Processor Affinity Node 0 Node 1

Non-uniform Memory Access (NUMA) Intel Nehalem architecture (Na-hay-lum, นาเฮลัม) Nehalem was replaced with the Sandy Bridge microarchitecture, released in January 2011. http://software.intel.com/en-us/articles/detecting-memory-bandwidth-saturation-in-threaded-applications/

Thread libraries Pthreads, Win32, Java (fiber?) pros and cons Java thread API is generally implemented using a thread library available on the host system (e.g. Win32API, Pthreads). Problem: Pthreads (Figure 4.9, p. 161) Win32 (Figure 4.10, p.163) Java threads (Figure 4.11, p. 164) Windows API Reference http://msdn.microsoft.com/en-us/library/ aa383749(VS.85).aspx

Thread cancellation Asynchronous cancellation Deferred cancellation Signal Handling Thread pool (Win32 API, Java), IIS performance tuning Scheduler activations Windows XP threads Linux threads

Multi-core programming

Error diffusion Input: 8-bit grayscale image (1 million pixels, 10K x 10K) Output: black & white image (same resolution) Lena, 1972 http://www.cs.cmu.edu/~chuck/lennapg/

จัดอยู่ในกลุ่มอัลกอริทึมที่เรียกว่า dynamic programming ใช้ thread เดิมทำ row ต่อไปได้เลย ไม่ต้องสร้าง thread ใหม่ จัดอยู่ในกลุ่มอัลกอริทึมที่เรียกว่า dynamic programming

Error diffusion Hint: 1. put space on the edge 2. use “byte” to save memory space 3. use integer programming 4. find the optimal number of threads for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) { OutputImage[i][j] = (InputImage[i][j] < 128 ? 0 : 1); err = InputImage[i][j] - (255 * OutputImage[i][j]); InputImage[i][j+1] += (err * 7) / 16; InputImage[i+1][j-1] += (err * 3) / 16; InputImage[i+1][j] += (err * 5) / 16; InputImage[i+1][j+1] += (err * 1) / 16; } 00 = black, FF = white

Example: Baboon Grayscale (298 x 298) Black & white (298 x 298)

เริ่มจับเวลาหลังสร้าง thread และหยุดจับเวลาหลัง join Sequential algorithm expected result on quad-core processor Number of threads (X-axis) vs. Wallclock time (Y-axis) Intel CoreTM2 CPU T5500 1.66 GHz 10,000 x 10,000 pixels

กิจกรรม: Error Diffusion ทำบน Host OS เท่านั้น ไม่ทำใน virtual machine ส่ง รูป 8-bit grey scale image (ก่อน) รูป 8-bit grey scale image (หลัง) กราฟแท่ง แกน x มีอย่างน้อยเท่าจำนวน core อธิบายโค้ด ทำยังไงไม่ให้ thread วิ่งแซงกัน

lock Statement (C# Reference) ถ้าตัวแปร lock เป็นแบบ static จะเกิดอะไรขึ้น ภาษา Java ใช้ synchronized https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/lock-statement

เช็คว่าช่องบนขวา ว่าทำแล้วหรือยัง Error Diffusion ไม่จำเป็นต้องใช้ lock จริง แค่เช็คช่องบนขวาว่าทำไปแล้วหรือยังก็พอ จริงหรือ? ไม่จริง Propagate error เช็คว่าช่องบนขวา ว่าทำแล้วหรือยัง Propagate error

Speedup on a quad-core processor

Homework Client-server Matrix multiplication Write a Java program for server and client. Server ทำหน้าที่แปลง domain name เป็น ip address Matrix multiplication Write a C/C++ program to perform matrix multiplication. (option: fix number of threads, or using thread pool)