Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaSarolta Bartané Megváltozta több, mint 8 éve
1
Operációs rendszerek Bátfai Norbert nbatfai@inf.unideb.hu http://www.inf.unideb.hu/~nbatfai/ Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia Tanszék egyetemi tanársegéd Dokumentum verzió: 0.0.4, http://www.inf.unideb.hu/~nbatfai/#oshttp://www.inf.unideb.hu/~nbatfai/#os DEIK_MIPPOS_2008tavasz_BN_6.odp Debrecen, 2008. május 4. 6. 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 nbatfai@inf.unideb.hu 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: http://www.gnu.hu/fdl.htmlhttp://www.gnu.hu/fdl.html
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 http://sourceforge.net/projects/lmbench
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 157 901925801 4 (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 email 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 email 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 email címemre, az „OS-ONALLOVIZSGA-LUTRI” tárggyal.
11
Diagnosztikai és mérő programok BogoMIP S init/main.c (0.99.11-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 http://lxr.linux.no/linux-old+v0.99.11/init/main.c#L219
12
BogoMIP S 1994, Jeff Tranter: standalone BogoMIPS http://bugs.debian.org/cgi- bin/bugreport.cgi?bug=467337 BogoMIPS Calculator: http://djwong.org/programs/bogomips/ $ gcc delay_586.c bogomips.c -o bogomips $./bogomips... $ grep bogo /proc/cpuinfo bogomips : 5988.34 bogomips : 5984.74
13
A delay(loops_per_sec); végrehajtásához szükséges idő, legyen pl. 2 26 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 ------ ----------- ----------- --------- --------- ---------------- 89.04 0.343685 1 672254 32207 futex 10.96 0.042304 0 129893 write 0.00 0.000000 0 2 read 0.00 0.000000 0 3 open 0.00 0.000000 0 3 close 0.00 0.000000 0 1 execve 0.00 0.000000 0 4 4 access 0.00 0.000000 0 3 brk 0.00 0.000000 0 1 munmap 0.00 0.000000 0 5 clone 0.00 0.000000 0 1 uname 0.00 0.000000 0 6 mprotect 0.00 0.000000 0 2 rt_sigaction 0.00 0.000000 0 1 rt_sigprocmask 0.00 0.000000 0 1 getrlimit 0.00 0.000000 0 16 mmap2 0.00 0.000000 0 4 fstat64 0.00 0.000000 0 1 set_thread_area 0.00 0.000000 0 1 set_tid_address 0.00 0.000000 0 6 set_robust_list ------ ----------- ----------- --------- --------- ---------------- 100.00 0.385989 802208 32211 total
15
Operációs rendszer mérők ● LMBench - Tools for Performance Analysis http://sourceforge.net/projects/lmbench http://sourceforge.net/projects/lmbench
16
[lmbench3.0 results for Linux norbi-desktop 2.6.22-14-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: 0.00000000] [MB: 256] [MHZ: 801 MHz, 1.2484 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: 2.6.22-14-generic] Gép általános adatai
17
Simple syscall: 0.2299 microseconds Simple read: 0.6717 microseconds Simple write: 0.5562 microseconds Simple stat: 4.1181 microseconds Simple fstat: 0.9244 microseconds Simple open/close: 6.4556 microseconds Select on 10 fd's: 1.4542 microseconds Select on 100 fd's: 7.5109 microseconds Select on 250 fd's: 24.4400 microseconds Select on 500 fd's: 34.4277 microseconds Select on 10 tcp fd's: 1.6078 microseconds Select on 100 tcp fd's: 15.9191 microseconds Select on 250 tcp fd's: 39.9130 microseconds Select on 500 tcp fd's: 80.0290 microseconds Signal handler installation: 1.0824 microseconds Signal handler overhead: 5.0451 microseconds Protection fault: 0.3871 microseconds Pipe latency: 18.7416 microseconds AF_UNIX sock stream latency: 17.6276 microseconds Process fork+exit: 280.9000 microseconds Process fork+execve: 2541.0000 microseconds Process fork+/bin/sh -c: 6697.0000 microseconds Rendszerhívásokkal kapcsolatos statisztikák
18
Simple syscall: 0.2299 microseconds Simple read: 0.6717 microseconds Simple write: 0.5562 microseconds Simple stat: 4.1181 microseconds Simple fstat: 0.9244 microseconds Simple open/close: 6.4556 microseconds Select on 10 fd's: 1.4542 microseconds Select on 100 fd's: 7.5109 microseconds Select on 250 fd's: 24.4400 microseconds Select on 500 fd's: 34.4277 microseconds Select on 10 tcp fd's: 1.6078 microseconds Select on 100 tcp fd's: 15.9191 microseconds Select on 250 tcp fd's: 39.9130 microseconds Select on 500 tcp fd's: 80.0290 microseconds Signal handler installation: 1.0824 microseconds Signal handler overhead: 5.0451 microseconds Protection fault: 0.3871 microseconds Pipe latency: 18.7416 microseconds AF_UNIX sock stream latency: 17.6276 microseconds Process fork+exit: 280.9000 microseconds Process fork+execve: 2541.0000 microseconds Process fork+/bin/sh -c: 6697.0000 microseconds Rendszerhívásokkal kapcsolatos statisztikák
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 2.6.23.14-107.fc8 2000 4096 1 48.54 5.404% 0.080 161.44 0.00000 0.00000 898 2.6.23.14-107.fc8 2000 4096 2 43.83 9.546% 0.177 254.31 0.00000 0.00000 459 2.6.23.14-107.fc8 2000 4096 4 43.39 19.40% 0.357 512.29 0.00000 0.00000 224 2.6.23.14-107.fc8 2000 4096 8 42.70 36.18% 0.711 967.26 0.00000 0.00000 118 Random Reads 2.6.23.14-107.fc8 2000 4096 1 0.58 0.840% 6.723 164.70 0.00000 0.00000 69 2.6.23.14-107.fc8 2000 4096 2 0.60 1.623% 13.041 169.04 0.00000 0.00000 37 2.6.23.14-107.fc8 2000 4096 4 0.59 2.928% 25.977 370.46 0.00000 0.00000 20 2.6.23.14-107.fc8 2000 4096 8 0.60 5.867% 49.702 841.53 0.00000 0.00000 10 Sequential Writes 2.6.23.14-107.fc8 2000 4096 1 46.90 25.56% 0.080 1654.24 0.00000 0.00000 183 2.6.23.14-107.fc8 2000 4096 2 44.98 67.56% 0.158 2171.62 0.00020 0.00000 67 2.6.23.14-107.fc8 2000 4096 4 45.11 129.2% 0.298 2340.72 0.00156 0.00000 35 2.6.23.14-107.fc8 2000 4096 8 43.07 250.5% 0.631 6215.18 0.00762 0.00000 17... 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 1.03 ------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 11458 99 42729 37 17932 20 13330 96 39708 24 104.7 %1 ------Sequential Create------ --------Random %Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- %-Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 783 99 +++++ +++ +++++ +++ 760 96 +++++ +++ 2992 99 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 email 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 email 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 email 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 email 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. Email: nbatfai@inf.unideb.hunbatfai@inf.unideb.hu Skype: batfai.norbert MSN: nbatfai@inf.unideb.hunbatfai@inf.unideb.hu Az óra fóruma: http://forum.inf.unideb.hu/ http://forum.inf.unideb.hu/
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.