Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.

Hasonló előadás


Az előadások a következő témára: "Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia."— Előadás másolata:

1 Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia Tanszék egyetemi tanársegéd Dokumentum verzió: 0.0.4, DEIK_MIPPOS_2008tavasz_BN_6.odp Debrecen, május előadás – ÜTEMEZÉS Programozó Páternoszter DE IK mérnök informatikus szak előadás

2 Operációs rendszerek előadás Bátfai, Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék Copyright © 2008 Bátfai Norbert E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Nem változtatható szakaszok: A szerzőről. Címlap szövegek: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra. Hátlap szövegek: Belépés a gépek mesés birodalmába. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being: A szerzőről, with the Front- Cover Texts being: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra, and with the Back-Cover Texts being: Belépés a gépek mesés birodalmába. Felhasználási engedély A GNU Free Documentation License nem hivatalos magyar fordítása:

3 A hatodik előadás vázlata Elmélet ● MINIX ütemezés Példák ● MINIX2 és MINIX3 ütemezés összehasonlítása ● Benchmarkok Gyakorlat ● A gyakorlat javasolt témája

4 Ism: Context switching (környezetváltás) id ő Fut Folyamat_ 1 Folyamat_ 2 Folyamat_ 3 Ütemez ő ● Folyamat_1 állapotának elmentése a PCB1 struktúrába ● … ● Folyamat_2 állapotának betöltése a PCB2 struktúrából ● Folyamat_2 állapotának elmentése a PCB2 struktúrába ● … ● Folyamat_3 állapotának betöltése a PCB3 struktúrából

5 LMBench - Tools for Performance Analysis

6 FS, pl. read() MM, pl. fork() Processzuskezelés Rendsz er taszk Lemez taszk Időzítő taszk DD taszkok Felhasználói programok Szerver processzusok User processzusok Ismétlés: a MINIX 2 ütemezése USER_Q SERVER_Q TASK_Q USER_Q (2) SERVER_Q (1) TASK_Q (0) OR (fs) 8 (mm) Mindhárom priorítási szinthez külön várakozási sor időzít ő (Round robin) (FCFS)

7 Ismétlés: a MINIX3 ütemezése TASK_Q (0) időzít ő kernel/proc.h... #define NR_SCHED_QUEUES 16 /* MUST equal minimum priority + 1 */ #define TASK_Q 0 /* highest, used for kernel tasks */ #define MAX_USER_Q 0 /* highest priority for user processes */ #define USER_Q 7 /* default (should correspond to nice 0) */ #define MIN_USER_Q 14 /* minimum priority for user processes */ #define IDLE_Q 15 /* lowest, only IDLE process goes here */ NR_SCHED_QUEUE S IDLE_Q (15) idle Otthoni feladat: Módosítsd úgy a MINIX3 rendszert, hogy 32 ütemezési sort használjon! „Bizonyítékul” az F9 billenytű nyomására kapott pillanatfelvételt küldj el az címemre, az „OS-OTTHONI-SOROK” tárggyal.

8 (2)(2) (1)(1) TASK_Q (0) memlog tty clock kernel/table.c (taszk táblázat)... /* process nr, pc, flags, qs, queue,... name */ { IDLE, idle_task, IDL_F, 8, IDLE_Q,... "idle" }, { CLOCK,clock_task, TSK_F, 8, TASK_Q,... "clock" }, { SYSTEM, sys_task, TSK_F, 8, TASK_Q,... "system"}, { HARDWARE, 0, TSK_F, 8, TASK_Q,... "kernel"}, { PM_PROC_NR, 0, SRV_F, 32, 3,... "pm" }, { FS_PROC_NR, 0, SRV_F, 32, 4,... "fs" }, { RS_PROC_NR, 0, SRV_F, 4, 3,... "rs" }, { DS_PROC_NR, 0, SRV_F, 4, 3,... "ds" }, { TTY_PROC_NR, 0, SRV_F, 4, 1,... "tty" }, { MEM_PROC_NR, 0, SRV_F, 4, 2,... "mem" }, { LOG_PROC_NR, 0, SRV_F, 4, 2,... "log" }, { INIT_PROC_NR, 0, USR_F, 8, USER_Q,... "init" }, IDLE_Q (15) idle (3)(3) pmrsds (4)(4) fs USER_Q (7) init... Ismétlés: a MINIX3 ütemezése

9 Kiemelt otthoni feladat: készítsd el a Tanenbaum könyv 168. oldali 39. feladatának megoldását! „Bizonyítékul” a munkádat bemutató, azt részletesen leíró, pillanatfelvételekel bővített DocBook dokumentumot (és egy abból generált html lapot) (vagy esetleg egy OpenOffice dokumentumot) küldj el nekem az címemre, az „OS-KIEMELTOTTHONI-OR169-39” tárggyal. OR 169 PIROS PIRULA „Módosítsa a MINIX ütemezőt úgy, hogy az tartsa nyilván, melyik felhasználói processzus mennyi CPU időt kapott legutóbb. Amikor nincs futtatható taszk vagy szerver, válassza azt a felhasználói processzust, amelyik legutóbb a legkevesebb időt kapta.”

10 Önálló vizsgafeladat: Egészítsd ki (írj a MINIX kernelhez) a MINIX kernelt egy sorsjáték ütemezőt! „Bizonyítékul” a munkádat bemutató, azt részletesen leíró, pillanatfelvételekel bővített DocBook dokumentumot (és egy abból generált html lapot) (vagy esetleg egy OpenOffice dokumentumot) küldj el nekem az címemre, az „OS-ONALLOVIZSGA-LUTRI” tárggyal.

11 Diagnosztikai és mérő programok BogoMIP S init/main.c ( től, 1993) /* * linux/init/main.c * * Copyright (C) 1991, 1992 Linus Torvalds */... unsigned long loops_per_sec = 1; static void calibrate_delay(void) { int ticks; printk("Calibrating delay loop.. "); while (loops_per_sec <<= 1) { ticks = jiffies; __delay(loops_per_sec); ticks = jiffies - ticks; if (ticks >= HZ) { __asm__("mull %1 ; divl %2" :"=a" (loops_per_sec) :"d" (HZ), "r" (ticks), "0" (loops_per_sec) :"dx"); printk("ok - %d.%02d BogoMips (tm)\n", loops_per_sec/500000, (loops_per_sec/5000) % 100); return; } printk("failed\n"); } i

12 BogoMIP S 1994, Jeff Tranter: standalone BogoMIPS bin/bugreport.cgi?bug= BogoMIPS Calculator: $ gcc delay_586.c bogomips.c -o bogomips $./bogomips... $ grep bogo /proc/cpuinfo bogomips : bogomips :

13 A delay(loops_per_sec); végrehajtásához szükséges idő, legyen pl idő clock(); ticks = clock(); delay(loops_per_sec); ticks = clock() - ticks; azaz a ticks a CLOCKS -ok száma itt. A delay(loops_per_sec); végrehajtásához szükséges idő, legyen most akkor 2 27 idő clock(); ticks = clock(); delay(loops_per_sec); ticks = clock() - ticks; azaz a ticks a CLOCKS -ok száma itt. Tegyük fel, hogy itt a CLOCKS_PER_SEC érték, azaz már átléptük a 2 hatványos ciklusokkal. Fejezzük ki innen a másodpercenkénti ciklusokat: loops_per_sec/ticks = ?/CLOCKS_PER_SEC A BogoMIPS működése

14 $ strace -f./filoszok >kimenet 2>strace.kimenet execve("./filoszok", ["./filoszok"], [/* 35 vars */]) = 0 brk(0) = 0x804a000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fba000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=60557,...}) = 0 mmap2(NULL, 60557, PROT_READ, MAP_PRIVATE, 3,... [pid 6508] futex(0x8049be0, FUTEX_WAKE, 1 [pid 6510] ) = 0 [pid 6507] futex(0x8049c10, FUTEX_WAIT, 2, NULL [pid 6508] ) = 0 [pid 6510] write(1, "4. filosz ebedel.\n", 18 [pid 6508] futex(0x8049c10, FUTEX_WAKE, 1 [pid 6510] ) = 18 [pid 6508] ) = 1 [pid 6510] futex(0x8049c00, FUTEX_WAKE, 2 [pid 6507] ) = 0 [pid 6508] write(1, "2. filosz ebedel.\n", 18 [pid 6510] ) = 0 [pid 6507] futex(0x8049c10, FUTEX_WAIT, 2, NULL Strace $ strace -cf./filoszok 2. filosz ebedel. 4. filosz ebedel. 1. filosz ebedel. 2. filosz ebedel.... Process 6147 detached Process 6148 detached Process 6149 detached Process 6150 detached Process 6151 detached % time seconds usecs/call calls errors syscall futex write read open close execve access brk munmap clone uname mprotect rt_sigaction rt_sigprocmask getrlimit mmap fstat set_thread_area set_tid_address set_robust_list total

15 Operációs rendszer mérők ● LMBench - Tools for Performance Analysis

16 [lmbench3.0 results for Linux norbi-desktop generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux] [LMBENCH_VER: 3.0-a9] [BENCHMARK_HARDWARE: YES] [BENCHMARK_OS: YES] [ALL: 512 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1m 2m 4m 8m 16m 32m 64m 128m 256m] [DISKS: ] [DISK_DESC: ] [ENOUGH: 5000] [FAST: ] [FASTMEM: NO] [FILE: /var/tmp/XXX] [FSDIR: /var/tmp] [HALF: 512 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1m 2m 4m 8m 16m 32m 64m 128m] [INFO: INFO.norbi-desktop] [LINE_SIZE: 32] [LOOP_O: ] [MB: 256] [MHZ: 801 MHz, nanosec clock] [MOTHERBOARD: ] [NETWORKS: ] [PROCESSORS: 2] [REMOTE: ] [SLOWFS: NO] [OS: i686-pc-linux-gnu] [SYNC_MAX: 1] [LMBENCH_SCHED: DEFAULT] [TIMING_O: 0] [LMBENCH VERSION: 3.0-a9] [USER: norbi] [HOSTNAME: norbi-desktop] [NODENAME: norbi-desktop] [SYSNAME: Linux] [PROCESSOR: unknown] [MACHINE: i686] [RELEASE: generic] Gép általános adatai

17 Simple syscall: microseconds Simple read: microseconds Simple write: microseconds Simple stat: microseconds Simple fstat: microseconds Simple open/close: microseconds Select on 10 fd's: microseconds Select on 100 fd's: microseconds Select on 250 fd's: microseconds Select on 500 fd's: microseconds Select on 10 tcp fd's: microseconds Select on 100 tcp fd's: microseconds Select on 250 tcp fd's: microseconds Select on 500 tcp fd's: microseconds Signal handler installation: microseconds Signal handler overhead: microseconds Protection fault: microseconds Pipe latency: microseconds AF_UNIX sock stream latency: microseconds Process fork+exit: microseconds Process fork+execve: microseconds Process fork+/bin/sh -c: microseconds Rendszerhívásokkal kapcsolatos statisztikák

18 Simple syscall: microseconds Simple read: microseconds Simple write: microseconds Simple stat: microseconds Simple fstat: microseconds Simple open/close: microseconds Select on 10 fd's: microseconds Select on 100 fd's: microseconds Select on 250 fd's: microseconds Select on 500 fd's: microseconds Select on 10 tcp fd's: microseconds Select on 100 tcp fd's: microseconds Select on 250 tcp fd's: microseconds Select on 500 tcp fd's: microseconds Signal handler installation: microseconds Signal handler overhead: microseconds Protection fault: microseconds Pipe latency: microseconds AF_UNIX sock stream latency: microseconds Process fork+exit: microseconds Process fork+execve: microseconds Process fork+/bin/sh -c: microseconds Rendszerhívásokkal kapcsolatos statisztikák

19

20 Fájlrendszer és hálózat mérők ● Tiobench ● Dbench ● Bonnie ● Bonnie+ +

21 No size specified, using 2000 MB Unit information ================ File size = megabytes Blk Size = bytes Rate = megabytes per second CPU% = percentage of CPU used during the test Latency = milliseconds Lat% = percent of requests that took longer than X seconds CPU Eff = Rate divided by CPU% - throughput per cpu load Sequential Reads fc % fc % fc % fc % Random Reads fc % fc % fc % fc % Sequential Writes fc % fc % fc % fc % tiobenc h

22 Bonni e $ bonnie Writing with putc()...done Writing intelligently...done Rewriting...done Reading with getc()...done Reading intelligently...done start 'em...done...done...done... Create files in sequential order...done. Stat files in sequential order...done. Delete files in sequential order...done. Create files in random order...done. Stat files in random order...done. Delete files in random order...done. Version Sequential Output Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP norbi-desktop 1G % Sequential Create Random %Create Create-- --Read--- -Delete-- -Create-- --Read--- %-Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP norbi-desktop,1G,11458,99,42729,37,17932,20,13330,96,39708,24,104.7,1,16,783,99, +++++,+++,+++++,+++,760,96,+++++,+++,2992,99...

23 Kiemelt otthoni feladat: mérő programok segítégével, ugyanazon a gépen hasonlíts össze egy FreeBSD és egy GNU/Linux rendszert! „Bizonyítékul” a munkádat bemutató, azt részletesen leíró, pillanatfelvételekel bővített DocBook dokumentumot (és egy abból generált html lapot) (vagy esetleg egy OpenOffice dokumentumot) küldj el nekem az címemre, az „OS-KIEMELTOTTHONI- BENCH” tárggyal. PIROS PIRULA Kiemelt otthoni feladat: mérő programok segítégével, ugyanazon a gépen hasonlíts össze két különböző kernel verziójú GNU/Linux rendszert! „Bizonyítékul” a munkádat bemutató, azt részletesen leíró, pillanatfelvételekel bővített DocBook dokumentumot (és egy abból generált html lapot) (vagy esetleg egy OpenOffice dokumentumot) küldj el nekem az címemre, az „OS-KIEMELTOTTHONI- BENCH2” tárggyal. PIROS PIRULA

24 Otthoni feladat: Próbáld ki az alábbi parancsokat és pár mondatban foglald össze a lényegi működésüket! „Bizonyítékul” a leírásod és parancsonként legalább egy példát küldj el az címemre, az „OS-OTTHONI-PARANCSOK3” tárggyal. (Használd a manuál lapokat is, de ne idézz a magyar vagy angol nyelvű manuálból!) ps, top, strace, sar, iostat, vmstat, mpstat, ping, ifconfig, route, traceroute, netstat, tcpdump, host, nslookup. Otthoni feladat: Próbálj ki néhány diagnosztikai és mérő programot! „Bizonyítékul” leírást, rövid értékelést és néhány pillanatfelvételt küldj el az címemre, az „OS- OTTHONI-BENCH” tárggyal.

25 Tippek a gyakorlatra Végezzünk feladatokat a labor jegyzet fejezete szerint! PP

26 Köszönöm a figyelmet Az előadások és a gyakorlatok kölcsönösen, oda-vissza építenek egymásra. Skype: batfai.norbert MSN: Az óra fóruma:


Letölteni ppt "Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia."