Kontakti

Metodologija za procjenu proizvodnih sposobnosti poduzeća. Suvremeni problemi znanosti i obrazovanja Identifikacija uskih grla

Izračunajmo planirano opterećenje opreme i utvrdimo uska grla. Izradit ćemo raspored proizvodnje i analizirati proizvodni program u pogledu njegove izvedivosti.

Utvrđivanje uskih grla u proizvodnom programu. Proračun i ravnoteža opterećenja opreme pri planiranju proizvodnje.

Svaki voditelj proizvodnje redovito postavlja pitanje „Može li sve planirane narudžbe izvršite na vrijeme... Jesu li proizvodni kapaciteti poduzeća dovoljni za to? Koliko se intenzivan rad očekuje u ovom planskom razdoblju? "

Ovaj će video demonstrirati module TCS sustava koji omogućuju, prije svega, izračunati i analizirati volumetrijske pokazatelje opterećenja opreme u vremenskom razdoblju od interesa, i drugo, vizualizirati raspored proizvodnje u obliku Ganttove karte s istodobnim prikazom opterećenja opreme koja vas zanima.

Dakle, kao početni podaci u TCS sustavu, već su stvoreni nalozi za proizvodnju gotovih proizvoda - ormari za montažu u različitim konfiguracijama i količinama te narudžba za proizvodnju jedinstvenih komponenti vlastite proizvodnje radi održavanja standarda zaliha.

Svaka od ovih narudžbi ima procijenjeni datum objavljivanja. Za narudžbe komercijalnih proizvoda to su obično uvjeti ugovora, za interne narudžbe to je otprilike sredina mjeseca. Podsjetimo, u skladištu imamo određenu zalihu jedinstvenih komponenti (pričuvu), iz koje će se prikupljati narudžbe za prvu polovicu mjeseca. Artikli interne narudžbe napravljeni do sredine mjeseca koristit će se za obnavljanje skladišne ​​rezerve i prikupljanje ostatka narudžbi razdoblja.

Sljedeći korak je izračun datuma lansiranja robe i njihovih komponenti, kao i komponenti proizvedenih kao zasebna narudžba za skladište jedinstvenih dijelova. Odaberite sve specifikacije proizvodnje za razdoblje planiranja i pokrenite makro " Izračunavanje datuma lansiranja / objavljivanja".

Kao rezultat toga, za sve proizvedene dijelove i montažne jedinice dobivamo približne datume početka i završetka proizvodnje, izračunate na temelju navedenih uvjeta i primijenjenih tehnoloških procesa.

Učinimo ove proizvodne specifikacije djelotvornima i stavimo ih na odgovarajuću karticu nomenklaturni plan proizvodnje... Navodi stavke s količinom koju treba proizvesti i rokovima.

Dakle, najraniji datum lansiranja serije je 18. veljače, posljednji datum objavljivanja je 23. ožujka 2010.

Detaljnije informacije prikazane su na kartici "Tehnički proces", odnosno plan rada. Oni. popis svih poslova koje je potrebno obaviti za izradu svih planiranih stavki. Za svaki posao izračunava se složenost njegove provedbe, a u skladu s tehnološkim procesom prikazuje se oprema, radionica, područje, zanimanje i kategorija.

Također, sustav TCS održava podatke o strojnom parku poduzeća, tj. stvarnu količinu svakog modela opreme i njihovu dostupnost u odjelima. Na primjer, imamo prešu Amada i prešu FINN-POWER u prvom odjeljku sedme trgovine, opremu za zavarivanje u drugom odjeljku, te stolove za montažu i upravljanje u trećem odjeljku.

Za procjenu izvedivosti ovog plana koristimo TCS modul "". Odredit ćemo datume početka i završetka za razdoblje u kojem se planirani radovi trebaju izvesti, točnije 18. veljače i 23. ožujka 2010. godine. Učinimo izračun.

Kao rezultat izračuna, prikazan je popis svih modela opreme koji su uključeni u rad. Označeno je kojim skupinama pripada i gdje se nalazi. Za svaki model fond radnog vremena izračunava se u satima za određeno razdoblje. Izračun uzima u obzir količinu ove opreme u odjelu i raspored planiranih popravaka i održavanja. Također se računa koliko će sati ukupno ova oprema biti zauzeta obavljanjem planiranih operacija. Posljednji stupac prikazuje planirano opterećenje.

U praksi, ovisno o veličini poduzeća i njegovoj strukturi, ovaj popis može biti vrlo velik (mnoge radionice, odjeljci, modeli). Zapravo može biti teško raditi s takvom količinom informacija. Stoga, radi praktičnosti, možete koristiti različite postavke.

Na primjer, pokažite opterećenje samo za jednu jedinicu koja nas zanima. Odaberimo prvi odjeljak dvanaestog dućana ili drugi odjeljak sedmog dućana. Možete pokazati preuzimanje samo za nas Grupe opreme, na primjer, Control. Oprema ove grupe prisutna je u različitim odjelima poduzeća.

Da biste brzo identificirali potencijalna uska grla u našem proizvodnom planu, jednostavno unesite prag opterećenja... Uvedimo 70%, pod pretpostavkom da oprema, čije opterećenje u planiranom razdoblju prelazi 70-80%, čini takozvanu rizičnu skupinu. Sakrijmo linije s manjim opterećenjem. U našem primjeru samo će hidraulična preša kupola FINN-POWER biti opterećena za više od 70%, tj. za plan za ožujak, to je usko grlo.

Slučajni kvar ove opreme može dovesti do smetnji u izvršavanju, ako ne cijelog plana, onda mnogih narudžbi planiranog razdoblja. To obično dovodi ne samo do financijskih kazni, već i do nefinancijskih gubitaka. Na primjer, ovaj negativni događaj može utjecati na poslovni ugled poduzeća.

Proučimo na koju opremu također trebate obratiti posebnu pozornost. Unosimo vrijednost praga od 50% i jednostavno bojimo takve linije u odabranoj boji. Amada press kočnica dodana je FINN-POWER-u, njeno izračunato opterećenje je 57%. Sve ostale radionice i oprema u njima nisu toliko opterećene i najvjerojatnije neće zahtijevati povećanu pažnju planera.

Tako se pomoću "" modula mogu izvesti sljedeći zaključci:

Je li to, u načelu, izvedivo, naš plan. Kriterij za ovu procjenu bit će višak od 100% opterećenja za bilo koji model. Ako je negdje opterećenje veće od 100%, tada nikakve suvremene metode optimizacije rasporeda proizvodnje neće pomoći. U tom slučaju potrebno je povećati fond rada opreme, tj. ili povećati vremensko razdoblje, ili zaposliti dodatno osoblje koje će raditi u drugoj smjeni, ili pokrenuti drugi dio opreme u blizini.
Naš primjer plana nema niti jedan položaj u kojem bi vrijednost opterećenja prelazila 100%. To znači, barem teoretski, da se određena količina posla može obaviti na vrijeme pomoću postojeće opreme. Hoćemo ili nećemo implementirati plan u stvarnost naše proizvodnje. Ova nam ocjena također omogućuje zaključivanje o izvedivosti prezentiranog plana, ali ne teoretski, poput prvog, već bliže životu i individualnim karakteristikama svake produkcije. Na primjer, očito je da će opterećenje opreme od 99% omogućiti ispunjenje plana samo u radnim uvjetima bez grešaka, kašnjenja i zastoja, kada su svi sustavi duplicirani, a roboti rade u poduzeću. U stvarnosti, kvarovi i kašnjenja redovito se javljaju iz različitih razloga. Ili materijal nije dovezen na vrijeme, stroj nije postavljen, radniku je pozlilo, zatim je došlo do nesreće u električnoj mreži itd. itd. Stoga u svakom poduzeću, čak i za različite radionice i odjeljke ovog poduzeća ili za različite vrste poslova, ovaj kriterij ima različito značenje. Na primjer, 80% opterećenja smatra se kritičnim za jedno područje, a 60% za drugo.
Oni. za svaku vrstu posla ili područje može se napraviti usporedba s odgovarajućom pojedinačnom vrijednošću praga koju iskusni planeri obično znaju iz prakse. Odgovara li struktura postojećeg strojnog parka u poduzeću proizvodnom programu. Ovaj zaključak bit će osobito koristan za poduzeća sa stabilnim proizvodnim programom, tj. plan proizvodnje koji se može izgraditi unaprijed i nije podložan snažnim promjenama iz mjeseca u mjesec.
U našem primjeru većina modela opreme nije opterećena ni za 40%, dok opterećenje preše FINN-POWER doseže kritičnu vrijednost. Da se slično stanje dogodilo u masovnoj proizvodnji, onda bismo, kako bismo povećali opseg proizvodnje, morali kupiti prije svega opremu za nabavu.

Druga uobičajena formulacija zadataka za proučavanje složenih objekata radi poboljšanja organizacijskog upravljanja je proučavanje mogućnosti povećanja produktivnosti tehnološke sheme objekta minimiziranjem zastoja u opremi, servisnim uređajima, pojedinačnim kanalima i / ili fazama. Kvantitativna procjena zastoja opreme može se dobiti simulacijom funkcioniranja objekta objekta za reprezentativno razdoblje, dobivanjem i analizom odgovarajućih vremenskih karakteristika.

Objektivna funkcija organizacijskog upravljanja u ovim slučajevima ima oblik sličan (9.36):

v= min (9,39),

gdje je vrijeme mirovanja servisnog aparata (ili kanala ili zasebne faze) s odgovarajućim izborom indeksa) prije ulaska u uslugu i-ti zahtjev iz opće serije u N zahtjevima.

Dakle, za jednokanalne jednofazne objekte ukupna količina zastoja servisnog aparata za cijelu seriju N zahtjevi su određeni izrazom (9.8), stoga ciljna funkcija organizacijskog upravljanja, uključujući automatiziranu, u ovom slučaju ima oblik:

v=[1znak (+ )] min (9,40).

Slični izrazi mogu se dobiti za višefazne i / ili višekanalne objekte kao sustave čekanja na temelju (9.16), (9.26) ili (9.34).

Imajte na umu da u ovom slučaju funkcija cilja v organizacijsko upravljanje složen je kriterij koji uz razmatrane zastoje opreme uzima u obzir i druge čimbenike, budući da uključuje intervale primanja zahtjeva, razdoblja korištenja uređaja, kanala i faza, kao i druge vremenske karakteristike. Stoga, ako u danom objektu implementiramo mjere navedene u prethodnom podstavku koje vode smanjenju vremena čekanja na zahtjeve, to će također dovesti do povećanja opterećenja opreme tehnološkim objektima, što u mnogim praktičnim slučajevima čini posebno prikladan za odabir kriterija učinkovitosti upravljanja organizacijom koji se razmatra u ovom podstavku, teški objekti.

3. Identifikacija i uklanjanje uskih grla

U proizvodnim sustavima "usko grlo" u tehnološkoj shemi naziva se aparat koji ima performanse niže od tehnološke sheme u cjelini, stoga je on ograničavajuća karika opće usluge u pogonu. Identifikacija "uskih grla" omogućuje postavljanje i rješavanje problema povećanja produktivnosti objekta posebno racionalno, primjenjujući skup organizacijskih i tehničkih mjera u odnosu na jedan uređaj, koji je "usko grlo", a ne cjelokupnu tehnološku shemu u cjelini, budući da je potonja nedvojbeno teža, dulja i obično mnogo skuplja.

Često je usko grlo promjenjivo "u vremenu i prostoru", tj. E. ovisno o tehnološkom režimu i uvjetima rada objekta ili njegovih pojedinačnih veza ili tehnološkoj prirodi pojedinih skupina ili klasa zahtjeva (drugim riječima, ovisno o specifičnoj situaciji u objektu u danom vremenskom intervalu), jedno ili drugo usluga aparata (ili kanala) ili čak zasebna faza. U takvim slučajevima, identifikacija "uskih grla" simulacijom važno je područje predmetnog istraživanja kako bi se potkrijepila, razvila, a zatim i provjerila učinkovitost upravljačkih odluka. Jasno je da uklanjanje „uskog grla“ znači kompleks organizacijskih i tehnoloških mjera, nakon čije provedbe aparat koji je bio „usko grlo“ više nije takav i ne ograničava funkcioniranje proizvodnje u cjelini.

Znak prisutnosti "uskih grla" u tehnološkoj shemi objekta, tumačenog kao QS, je stvaranje reda ili kašnjenja na prethodnim jedinicama ili fazama ispred aparata (ili faze), koje su " usko grlo ", i obrnuto, vrijeme zastoja aparata (ili faza) odmah nakon njega.

Predstavimo situaciju s prisutnošću uskog grla u objektu u formaliziranom obliku, koristeći tehniku ​​o kojoj je gore bilo riječi u ovom poglavlju.

Pretpostavimo, na primjer, da se objekt kao jednokanalni QS sastoji od nekoliko uzastopno smještenih jednokanalnih jednofaznih servisnih uređaja čiji dijagram toka odgovara slici 9.5.

Slika 9.5. Shema višekanalnog jednokanalnog QS-a.

Uređaji za servisiranje tehnološke sheme ovog ZUT -a označeni su indeksom k i točno k jedno od njih je usko grlo. Neka bude i-ti zahtjev se servisira u navedenom k uređaj na određeno vrijeme, a stigao je na ovaj uređaj s intervalom u odnosu na prethodno primljeni zahtjev.

Na prethodnom ( k)1) -ti uređaj, tamošnji zahtjev već je završio s servisiranjem i čeka na otpuštanje k aparat; možda na ulazu u ( k1) -ti uređaj već ima još jedan zahtjev koji čeka uslugu. Dakle, situacija na ( k1) -ti aparat odražava se vremenskom karakteristikom (9.4):

= +  za +> za (9.41);

Sljedeći, ( k+1) -ti aparat ne radi, pa ćemo za njega, u općem slučaju, na temelju (9.8), imati:

=  za> + za [ k+1, ...,n] (9.42).

Što se tiče izravno k-ti aparat tehnološke sheme, koji je "usko grlo", tada oba odnosa (9.41) i (9.42) mogu biti istiniti za njega, ovisno o tome što konkretno ograničava njegov rad ili početak servisiranja potražnje (tj. uređaja; možda početne faze servisa, ako je višefazni itd.), ili njegovo stanje (unutarnji elementi, veze među njima, završne faze itd.)

Objektivna funkcija organizacijskog upravljanja v, čiji je cilj uklanjanje "uskog grla" i time povećanje produktivnosti cijele tehnološke sheme, ima sljedeći opći oblik:

v=(9.43).

Slično, izrazi se mogu dobiti za druge objektne strukture i druge uslužne discipline. Nakon što je na računalu implementirao simulacijski model predmeta koji se proučava u odnosu na različite uvjete njegova funkcioniranja i nakon što je u kvantitativnom obliku dobio vrijednosti kriterija (9.41) i (9.42) za svaku komponentu i / ili tehnološku shemu, što se uvijek može učiniti, lako je iz ovih rezultata ustanoviti ima li u danoj tehnološkoj shemi mjesto "usko grlo" i koja je to specifična komponenta objekta i u kojim se specifičnim uvjetima nalazi. Nakon toga možete predložiti skup organizacijskih i tehničkih mjera za uklanjanje "uskog grla" (paralelizacija zahtjeva za uslugama na ovom mjestu dijagrama toka proizvodnje, ubrzane tehnologije, odnosno uz znatno bržu uslugu i, sukladno tome, niži prosjek, itd.), kao i provjeriti njihovu učinkovitost na istom simulacijskom modelu objekta.

5.3 Klasifikacija uskih grla

Uska i široka mjesta vrste su neravnoteže povezane s činjenicom da je njihov kapacitet protoka odgovarajuće manji ili veći u odnosu na izračunati.

Proizvodni sustav ne može dugo funkcionirati unutar izračunatih omjera koji su mu dati. Čak i ako je u početku bilo u ovom stanju, tada se pod utjecajem različitih čimbenika (fizičko trošenje opreme, znanstveni i tehnološki napredak, korištenje naprednog iskustva itd.), Proizvodni kapaciteti pojedinih faza mijenjaju (smanjuju ili povećavaju ), i neravnomjerno. To je jedan od glavnih razloga nesrazmjera, a posebno uskih grla. Osim toga, neravnoteže se mogu stvoriti u fazi projektiranja proizvodnih sustava. Mogu se osmisliti namjerno, ili mogu biti rezultat pogrešnih odluka o dizajnu. Namjerno stvorene neravnoteže (široki prostori) rezultat su ekonomski opravdanog rezerviranja kapaciteta pojedinih vrsta opreme (statički elementi) zbog potrebe uzimanja u obzir faktora dinamičnosti kapaciteta.

Razlog pogrešnih dizajnerskih odluka, koji su doveli do pojave disproporcija (i uskih i širokih područja), je slabo razvijena teorijska i metodološka podloga za organizaciju proizvodnje.

Dakle, kao prvi znak klasifikacije uskih grla koristimo znak područja njihove pojave. Prema ovom kriteriju, uska grla se mogu podijeliti na ona koja su nastala u fazi projektiranja i u fazi rada proizvodnih sustava.

Kao drugi kriterij klasifikacije možete koristiti kriterij ekonomske procjene uskih grla. Prema ovom kriteriju mogu se podijeliti na ekonomski izvedive i necelishodne. Danas u pravilu koncept uskog grla povezujemo s potrebom provođenja niza tehnoloških i organizacijskih mjera usmjerenih na njegovo uklanjanje. No, treba li ukloniti svako usko grlo? Ovdje je potreban ekonomski pristup. Uklanjanje uskog grla povezano je s određenim gubicima i troškovima: u nekim će slučajevima to zahtijevati zaustavljanje na neko vrijeme

Analiza organizacije rada na primjeru poduzeća LLC "Orenburški radijator"

suradnja podjela režima rada Bitan dio organizacije rada je organizacija radnih mjesta. Radno mjesto je primarna karika u proizvodnji, zona radne aktivnosti radnika ili grupe radnika (ako je radno mjesto kolektivno) ...

Analiza stanja organizacije rada i projektiranje pojedinih radnih procesa

Aktivnosti individualnog poduzetnika Emelyanova A.S.

1. Vanjske aktivnosti poduzeća, rad s klijentima. Iako je poduzetnik prilično poznat u obližnjim četvrtima Magnitogorska, potpuno zanemaruje oglašavanje svog poduzeća. Zbog toga, u udaljenim, pa čak i susjednim ...

Metodologija za sveobuhvatnu analizu gospodarskih aktivnosti

Za bilo koji pokazatelj, skup analiziranih vrijednosti poredan je od najboljeg do najgoreg na način da se najboljoj vrijednosti dodijeli prvo mjesto, sljedećoj - drugo itd. primljena mjesta se zbrajaju ...

Organizacija rada na temelju proučavanja procesa rada

Glavni zadatak organiziranja radnog mjesta je stvaranje takvih radnih uvjeta u kojima bi kretanje radnika bilo najmanje zamorno i najproduktivnije. Radno mjesto je područje primjene rada ...

Organizacija rada u javnom ugostiteljskom poduzeću "Tri brijesta"

· Razvoj racionalnih tehnika i metoda rada · Omjera rada · Osiguravanje zdravih i sigurnih uvjeta rada · Organizacija nagrađivanja i materijalnih poticaja za rad · Poticanje radne discipline Četiri od navedenih ...

Planiranje poduzeća

Za izračun proizvodnih kapaciteta i identificiranje uskih grla u proizvodnji potrebno je sastaviti bilans proizvodnih kapaciteta za poduzeće (tablica 2) ...

Planiranje i organizacija proizvodnje fermentiranih mliječnih napitaka

Uska grla su radionice, odjeljci, jedinice, instalacije i skupine opreme, glavna i pomoćna proizvodnja, čija propusnost ne odgovara kapacitetu vodeće karike, za koju je instaliran proizvodni kapacitet ...

Koncept strukture poduzeća, njegove karakteristike

· Jednostavno radno mjesto (jedan dio opreme, jedan radnik); Radno mjesto s više stanica - jedan radnik opslužuje nekoliko vrsta opreme (u pravilu ...

Proračun tehničko -ekonomskih pokazatelja stranice prema zadanom programu

Radno mjesto je organizacijski nedjeljiva (u datim specifičnim uvjetima) karika proizvodnog procesa, koju opslužuje jedan ili više radnika ...

Proračun tehnoloških troškova proizvodnje dijela

Prihvaćam broj poslova jednak 3 ...

Izračun tehničkih i ekonomskih pokazatelja odjeljka za popravak ATP-a za obnovu košuljice cilindara motora ZMZ-53

Količina i cijena opreme potrebne za provedbu programa popravka dijelova izračunavaju se zasebno za svaku operaciju, na temelju broja komada opreme. Za izračun broja postova ...

Pod radnim mjestom podrazumijeva se prostor opremljen potrebnim tehničkim sredstvima, u kojem se obavlja radna aktivnost izvođača ili grupe izvođača, koji zajedno izvode jedan posao ili operaciju ...

Poboljšanje organizacije i održavanja radnih mjesta

Od velike je važnosti raspored radnog mjesta, što znači svrsishodno prostorno postavljanje u vodoravnu i okomitu ravninu funkcionalno međusobno povezanih sredstava za proizvodnju (oprema, alati ...

Statistika je da se 20% koda izvršava 80% vremena. Njezina točnost
teško u potpunosti odgovara stvarnom stanju stvari, ali općenito značenje
prilično zanimljivo: ispada da je optimiziranje cijele aplikacije zanimanje
nezahvalno i glupo, i samo optimizacija tih
20% aplikacija kojima je potrebno najviše vremena za dovršetak. Štoviše, pronaći ovih 20% nije tako
i teško.

U ovom članku ćemo govoriti o profiliranje... Prema Wikipediji,
profiliranje nije ništa drugo do "prikupljanje karakteristika programa, npr
kao vrijeme izvršavanja pojedinih fragmenata, broj točno predviđenih uvjeta
prijelazi, broj propuštenih predmemorije i tako dalje. "To je prevedeno na ruski
znači "identificiranje uskih grla programa" (ili, kako kažu anglofili,
"uska grla"), naime - svi oni odjeljci koda u kojima se program nalazi
počinje "kliziti", prisiljavajući korisnika da čeka.

Najjednostavnije profiliranje može se izvesti golim rukama (i dolje ću pokazati
kako to učiniti), međutim, bolje je osloniti se na zajednicu, čiji predstavnici
već su stvorili sve potrebne alate. Prvi i najpopularniji alat
nosi naziv GNU Profiler (ili gprof). Korišten je stoljećima
profiliranje koda generiranog GCC prevoditeljem. Druga je pokrivenost GNU -a
alat za testiranje (gcov), uslužni program za detaljniju analizu performansi.
Treći je skup alata za ispravljanje pogrešaka i profiliranje pod općim imenom Google
Alati za izvedbu (skraćeno GPT). Pa, četvrti je Valgrind, koji barem
i dizajniran je za traženje pogrešaka u radu s memorijom, ali sadrži u svom arsenalu
niz pomoćnih programa za analizu izvedbe programa.

Krenimo, očekivano, s klasicima.

GNU Profiler

GNU Profiler(gprof) jedan je od najstarijih profila koji je dostupan za
operativnim sustavima kao što je UNIX. To je dio gcc paketa, pa može
koristiti za profiliranje programa napisanih na bilo kojem podržanom
njihov jezik (a to nije samo C / C ++, već i Objective-C, Ada, Java).

Gprof sam po sebi nije alat za profiliranje, već samo dopušta
prikazati statistiku profila koju aplikacija prikuplja tijekom
rad (nije potrebno reći da niti jedna aplikacija to ne radi prema zadanim postavkama,
ali može početi ako program sastavite s argumentom "-pg").

Pogledajmo kako to funkcionira u stvarnom životu. Da osjetim sve
prednosti gprofa, nećemo ga primijeniti na neke apstraktne, umjetne
stvorena aplikacija, ali stvarna koja se koristi svaki dan. Neka bude
bit će gzip.

Dobivamo i raspakiramo izvore arhivatora:

$ wget www.gzip.org/gzip-1.3.3.tar.gz
$ tar -xzf gzip -1.3.3.tar.gz
$ cd gzip-1.3.3

Instalirajte alate potrebne za izgradnju (u Ubuntuu je to učinjeno
kroz instalaciju bitnog meta paketa):

$ sudo apt-get install build-essential

Pokrenite konfigurator gradnje prosljeđivanjem argumenta u varijabli okruženja CFLAGS
"-pg":

$ CFLAGS = "- pg" ./konfiguracija

Sastavite program:

Sada imamo gzip binarni dokument koji može čuvati statistiku o njemu
izvršenje. Svako njegovo pokretanje bit će popraćeno generiranjem datoteke gmon.out:


$ ls -l gmon.out
-rw-r-r-- 1 j1m j1m 24406 2010-11-19 14:47 gmon.out

Ova datoteka nije namijenjena za čitanje ljudi, ali se na nju može koristiti
izrada detaljnog izvješća o izvršenju:

$ gprof ./gzip gmon.out> gzip-profile.txt

Najvažniji dio rezultirajuće datoteke prikazan je na snimci zaslona.

Svaki je red statistika izvršavanja jedne funkcije, stupci su različiti
pokazatelji. Zanimaju nas prva, treća, četvrta i sedma kolona. Oni
prikazati podatke o ukupnom vremenu provedenom na izvršavanju
funkcije (prvi stupac - u postocima, treći - u sekundama), njegov broj
pozivi i ime.

Pokušajmo analizirati izvješće. Prva na popisu je funkcija ispuhavanja,
koji je pozvan samo jednom, ali je "progutao" 29% cijelog vremena izvršenja
programa. Ovo je implementacija algoritma kompresije, a ako bismo se suočili s tim
zadatak optimiziranja gzipa morali bismo početi s njim. 22% vremena
bilo je potrebno izvršiti funkciju najdužeg podudaranja, ali, za razliku od deflacije, bila je
nazvano 450 613 081 puta, pa je svaki zasebni poziv funkcije trajao
zanemariva količina vremena. Ovo je drugi kandidat za optimizaciju. Funkcija
fill_window je trajao 13% vremena i nazvan je "samo" 22 180 puta.
Možda bi u ovom slučaju optimizacija mogla dati rezultate.

Pomaknuvši datoteku izvješća do sredine (usput, odmah iza tablice nalazi se detaljna
pomoć oko svih njegovih stupaca, što je vrlo povoljno), doći ćemo do tzv
Grafikon poziva. To je tablica podijeljena na zapise,
međusobno odijeljene isprekidane crte (ponovljeni znakovi minus). Svaki
zapis se sastoji od nekoliko redaka, dok je drugi redak, suprotno zdravom razumu
značenje se naziva "primarno" i opisuje funkciju kojoj je zapis namijenjen.
Gornji redak je opis funkcije koja ga poziva, a ispod - pozvani
nju.

Stupci sadrže sljedeće podatke (slijeva nadesno): indeks (indeks, to je
samo u primarnoj liniji i, zapravo, ne znači ništa); postotak vremena,
potrebno za izvršavanje funkcije (% vremena); količina provedenog vremena
izvršiti ga u nekoliko sekundi (samo); količina vremena provedenog na
izvršavanje funkcije i svih funkcija koje ona poziva (djeca); broj poziva
funkciju (zvanu) i njezin naziv (naziv).

Grafikon poziva vrlo je koristan kada je u pitanju optimizacija
tuđi kod. Ne samo uska grla programa postaju vidljiva, već i sva logika
njezin rad, što možda nije očito pri ispitivanju izvora.

GNU Alat za ispitivanje pokrivenosti

Osim gprofa, GCC prevoditelj uključuje još jedan alat
profiliranje, što vam omogućuje da dobijete detaljnije izvješće o izvršenju
aplikacije. Uslužni program se zove gcov i dizajniran je za generiranje na ovaj način
naziva se označeni izvorni kod koji se nalazi nasuprot svakom retku
sadrži broj njezinih izvedbi. To može biti potrebno za dublje
proučavanje problema primjene, kada se pronađu funkcije koje su odgovorne za "kočnice", i
srž problema ostaje nejasna (na primjer, nije jasno koji red u
odgovorna je višestruko ugniježđena petlja unutar duge funkcije
nenormalan pad performansi).

Gcov se ne može osloniti na statistiku koju generira aplikacija pri izgradnji s
sa zastavicom "-pg" i zahtijeva ponovnu izgradnju sa zastavicama "-fprofile-arcs" i "-ftest-pokrivenost":

$ CFLAGS = "-fprofile-lukovi -ftest-pokrivenost"
./konfiguracija && make

$ ./gzip ~ / ubuntu-10.10-desktop-i386.iso

Grafikon poziva bit će generiran za svaku datoteku izvornog koda na temelju
koju možete stvoriti označenu za čitanje ljudi
izvor:

$ gcov deflate.c
Datoteka "deflate.c"
Izvršene linije: 76,98% od 139
deflate.c: stvaranje "deflate.c.gcov"

Dobivena datoteka ima tri stupca: broj izvršenja
redak, broj retka i samu liniju. Štoviše, za retke koji ne sadrže kôd, u
prvi stupac će imati znak minus, a za retke koji nikada nisu popunjeni -
slijed oštrih komada: #####.

Google alati za izvedbu

Google alati za izvedbu(skraćeno GPT) razvili su Googleovi zaposlenici,
dizajniran za pronalaženje curenja memorije i uskih grla u aplikacijama. Poput gprofa,
GPT nije vanjski za testiranu aplikaciju i
prisiljava ga da samostalno vodi statistiku svojih performansi. ali
za to se kôd ne unosi u fazi izrade aplikacije, već
knjižnice koje se mogu povezati s aplikacijom u vrijeme izrade, ili
spojen pri pokretanju.

Za razvojne programere dostupne su ukupno dvije biblioteke dodataka: tcmalloc (koji,
prema autorima GPT -a, to je najbrža implementacija na svijetu
malloc funkcionira, a također vam omogućuje da analizirate kako memorija
potrošen, dodijeljen i protočan) i profil koji generira izvješće o izvršenju
programi poput gprof. Uključen je i uslužni program pprof,
dizajniran za analizu i vizualizaciju prikupljenih podataka.

Izvorni kod, kao i rpm i deb paketi svega ovog skupa dostupni su na adresi
službena stranica (code.google.com/p/google-perftools), međutim ne bih
savjetuje se da se zamarate ručnom instalacijom jer je set dostupan u
standardna spremišta Fedora i Ubuntu, a mogu se instalirati s jednim jednostavnim
naredbom:

$ sudo apt-get install google-perftools \ libgoogle-perftools0
libgoogle-perftools-dev

$ LD_PRELOAD = / usr / lib / libprofiler.so.0.0.0 \
CPUPROFILE = gzip-profile.log ./gzip \
/home/j1m/ubuntu-10.10-desktop-i386.iso

Međutim, sami zaposlenici Googlea ne savjetuju korištenje ove metode (očito zbog problema
s programima napisanim na C ++), preporučujući povezivanje knjižnice tijekom
skupština. Pa, nemojmo se svađati.

Za eksperimente uzmimo isti gzip i obnovimo ga,
povezivanje binarnog zapisa s potrebnom knjižnicom:

$ cd ~ / gzip-1.3.3
$ očistite
$ ./konfiguracija
$ LDFLAGS = "- lprofiler" ./konfiguracija && make

Sada je gzip spreman ponovno prijaviti njegovo izvršavanje, ali to neće učiniti.
zadano. Za aktiviranje profilatora morate deklarirati varijablu
okruženja CPUPFOFILE i dodijelite mu put do datoteke profila:

$ CPUPROFILE = gzip-cpu-profile.log ./gzip \
~ / ubuntu-10.10-desktop-i386.iso
PROFIL: prekidi / iseljavanja / bajtovi = 4696/946/91976

Kao i u slučaju s gprof -om, rezultirajuće izvješće je u binarnom obliku i može biti
samo za čitanje pomoću posebnog uslužnog programa. U GPT -u njegovu ulogu imaju
perl skripta pprof (u Ubuntuu, kako bi se izbjegla zabuna s drugim uslužnim programom istog imena
preimenovan je u google-pprof) koji može generirati više od tablica i
označeni izvori poput gcova, ali i vizualni grafikoni poziva. Ukupno
postoji 11 vrsta izlaza ovog uslužnog programa, od kojih je svaki dodijeljen
odgovarajući argument naredbenog retka:

  1. Text (--text)-tablica slična ispisu gprof-a;
  2. Callgrind (--callgrind)-izlaz u formatu kompatibilnom s uslužnim programom kcachegrind (iz paketa valgrind);
  3. Grafički (--gv)-grafikon poziva koji se odmah prikazuje na ekranu;
  4. Unos (--list = ) - označeni popis navedene funkcije;
  5. Rastavljeni popis (--disasm = ) - označeno
    rastavljeni popis navedene funkcije;
  6. Simbolički (--symbols)-popis dekodiranih simboličkih naziva;
  7. Grafička datoteka (--dot, --ps, --pdf, --gif)-graf poziva spremljen
    u datoteku;
  8. Raw (--raw)-priprema datoteku binarnog profila za prijenos putem mreže
    (kodirano pomoću znakova za ispis).

Najviše nas zanimaju tekstualni ("--text") i grafički
("--gv") vrste poziva. Samo oni mogu dati potpune informacije o provedbi.
primjenu i sva problematična područja. Izlaz teksta generira se na sljedeći način
put:

$ google-pprof --text ./gzip gzip-cpu-profile.log

Kao što možete vidjeti na snimci zaslona, ​​izlaz je tablica s popisom svega
funkcije i troškove za njihovu provedbu. Na prvi pogled djeluje vrlo slično
tablicu koju je generirao pomoćni program gprof, ali nije. Biti pravedan
knjižnici, GPT ne može voditi statistiku izvođenja programa u istim pojedinostima
i točno kako to radi kod ubrizgan izravno u aplikaciju. Stoga, umjesto
evidencije svih činjenica pozivanja i napuštanja funkcija (ponašanje programa sastavljeno s
sa zastavicom "-pg"), GPT koristi tehniku ​​koja se naziva uzorkovanje. Sto puta u sekundi
knjižnica aktivira posebnu funkciju čiji je zadatak prikupljanje podataka o
točku u kojoj se program trenutno izvodi i snimanje
ove podatke u međuspremnik. Po završetku programa ti se podaci koriste za generiranje i
datoteka profila zapisuje se na disk.

Zato u izlazu pprof nema podataka o tome koliko je puta funkcija bila
uzrokovane tijekom rada programa ili koji postotak vremena je potrošen na to
izvršenje. Umjesto toga, za svaku je funkciju naveden broj provjera, u
vrijeme za koje se doznalo da je u ovom trenutku program bio angažiran
izvršavanje ove funkcije. Dakle, broj čekova danih za svaku
funkcije, možete sigurno računati ukupno vrijeme izvršenja.

U svim ostalim aspektima, tablica je vrlo slična ispisu gprof: prema funkciji on
redak, po stupcu. Ukupno ima šest stupaca:

  1. Broj provjera za ovu funkciju;
  2. Postotak provjera za sve ostale programske funkcije;
  3. Broj provjera za ovu funkciju i sve njezine potomke;
  4. Isti broj kao postotak od ukupnog broja čekova;
  5. Naziv funkcije.

U početku se čini i ovaj pristup mjerenju vremena izvođenja
neprecizan, ali ako usporedite tablice dobivene s gprof s tablicama
pprof, postaje jasno da prikazuju istu sliku. Štoviše, GPT
omogućuje vam promjenu broja provjera u sekundi pomoću varijable
okruženja CPUPROFILE_FREQUENCY, tako da se točnost može povećati za deset, sto
ili tisuću puta, ako situacija to zahtijeva (na primjer, ako je potrebno)
profilirati izvršavanje vrlo malog programa).

Nedvojbena prednost GPT -a u odnosu na gprof je sposobnost predstavljanja
informacije u grafičkom obliku. Za aktiviranje ove pprof funkcije potrebno je
pokrenite sa zastavicom "--gv" (usput, za prikaz grafikona će se koristiti
istoimeni uslužni program):

$ google-pprof --gv ./gzip gzip-cpu-profile.log

Graf poziva funkcije generiran kao rezultat izvršavanja ove funkcije je vrlo
vizualni i mnogo lakši za razumijevanje i proučavanje od sličnih
tekstualni grafikon generiran naredbom gprof. Naziv i statistika izvođenja svakog
funkcije su smještene u pravokutnike čija je veličina izravno proporcionalna
količinu vremena utrošenog na izvršavanje funkcije. Unutar pravokutnika
objavio podatke o tome koliko je vremena trebalo izvršiti samu funkciju i njezinu
potomci (vrijeme se mjeri u čekovima). Veze između pravokutnika ukazuju
redoslijedom pozivanja funkcija i numeričkim vrijednostima navedenim uz veze -
za vrijeme trajanja pozvane funkcije i svih njezinih potomaka.

Još jedna prednost GPT -a je mogućnost korištenja različitih razina
granularnost za izlaz podataka, dopuštajući korisniku da sam odabere jedinice
drobljenje. Prema zadanim postavkama, funkcija se stoga koristi kao takva jedinica
bilo koji pprof izlaz logički je podijeljen na funkcije. Međutim, po želji, kao
frakcijske jedinice možete koristiti retke izvornog koda (argument "--line"),
datoteke ("--files") ili čak adrese fizičke memorije ("--addresses"). Zahvaljujući
ova GPT funkcionalnost vrlo je prikladna za pronalaženje uskih grla
velike aplikacije, kada prvi put analizirate performanse na
odvojene datoteke, a zatim idite na funkcije i na kraju pronađite problematične
mjesto na razini izvornog koda ili adresa memorije.

I posljednja stvar. Kao što sam već rekao, GPT nije samo dobar profiler,
ali i alat za pronalaženje curenja memorije, pa ima jedan vrlo
ugodan nuspojava mogućnosti analize potrošnje memorije
primjena. Da biste to učinili, aplikacija mora biti izgrađena ili pokrenuta s podrškom
library tcmalloc, a varijabla HEAPPROFILE sadrži adresu za postavljanje
datoteku profila. Na primjer:

$ LD_PRELOAD = / usr / lib / libtcmalloc.so.0.0.0 \
HEAPPROFILE = gzip-heap-profile.log \
./gzip ~ / ubuntu-10.10-desktop-i386.iso
Početak praćenja hrpe
Ispis profila hrpe u gzip-heap-profile.log.0001.heap (izlazak)

Završna 0000.heap bit će dodana u rezultirajuću datoteku. Ako je uključeno
ovu datoteku uslužnom programu pprof i odredite zastavicu "--text", prikazat će tablicu
funkcije i razinu potrošnje memorije svake od njih. Stupci znače isto
isto kao u slučaju redovitog profiliranja, s izuzetkom da umjesto
broj čekova i njihove postotke, tablica sada sadrži broj
utrošene memorije i postotak ukupne potrošnje memorije.

Ako je potrebno, te se informacije mogu dobiti u grafičkom obliku, kao i
promijeniti jedinice za drobljenje. Knjižnica se može prilagoditi raznim
varijable okruženja, od kojih se najkorisnija naziva HEAP_PROFILE_MMAP.
Omogućuje profiliranje za sistemski poziv mmap (prema zadanim postavkama GPT
prikuplja statistiku samo za pozive na malloc, calloc, realloc i new).

Nekoliko riječi o Valgrind

U posljednjem dijelu članka kratko ćemo pogledati kako se koristi
instrument Valgrind za profiliranje aplikacija. Valgrind je vrlo moćan
ispravljač pogrešaka u memoriji koji može pronaći memorijske pogreške kao što su
druge komunalne službe čak i ne sumnjaju. Ima modularnu arhitekturu koja s
s vremenom mu je omogućio da nabavi nekoliko dodataka koji nisu povezani
izravno na ispravljanje pogrešaka. Ukupno postoje tri takva dodatka:

  1. Cachegrind - omogućuje prikupljanje statistike o učitavanju podataka i
    programske upute u predmemoriju prve i druge razine procesora (moćne i
    sofisticirani alat koji je koristan pri izradi profila
    kod niske razine).
  2. Massif je profilitelj hrpe sličan funkcionalnosti svom GPT -u.
  3. Callgrind je profiler sličan gprof -u i GPT -u.

Prema zadanim postavkama, Valgrind koristi memcheck kao svoj glavni dodatak.
(ispravljač pogrešaka u memoriji), pa da biste ga pokrenuli u načinu profiliranja, morate
ručno navedite potrebni dodatak. Na primjer:

$ valgrind --tool = callgrind ./program

Nakon toga, datoteka pod nazivom
callgrind.out.PID program koji se može raščlaniti s uslužnim programom
callgrind_annotate ili grafički program kcachegrind (instaliran
odvojeno). Neću opisivati ​​format podataka koje generiraju ti programi.
(dobro je zastupljen na istoimenim stranicama s ljudima), samo ću to reći
callgrind_annotate najbolje je pokrenuti sa "--auto" zastavicom tako da može
samostalno pronaći datoteke izvornog koda za program.

Za analizu korištenja memorije Valgrind bi trebao biti pokrenut s argumentom "--tool = massif".
Nakon toga će se programska datoteka massif.out.PID pojaviti u trenutnom direktoriju, koji
može se raščlaniti pomoću uslužnog programa ms_print. Za razliku od pprofa, to
može prikazati podatke ne samo u obliku standardne tablice, već i generirati
lijepa ascii-art grafika.

zaključci

Alati poput gprof, gcov i GPT omogućuju analizu performansi
aplikaciju i identificirati sva uska grla do zasebnog procesora
upute, a povezivanjem Valgrind -a s procesom profiliranja možete postići
nevjerojatni rezultati.

INFO

Prema zadanim postavkama, gprof ne prikazuje podatke o profilu za funkcije.
libc knjižnice, ali se situacija može ispraviti instaliranjem paketa libc6-prof i
izrada testiranog s bibliotekom libc_p: "export LD_FLAGS =" - lc_p "".

GPT profiler možete aktivirati ne samo uz pomoć varijable okruženja
CPUPROFILE, ali i omotavanjem odjeljka koda koji se testira funkcijama ProfilerStart ()
i ProfilerStop (), koji su deklarirani u google / profiler.h.

UPOZORENJE

Zbog sigurnosnih zahtjeva, GPT neće raditi za aplikacije s
s postavljenim bitom SUID.

Je li vam se svidio članak? Podijeli