Kişiler

Bir işletmenin üretim yeteneklerini değerlendirme metodolojisi. Modern bilim ve eğitim sorunları Darboğazların belirlenmesi

Planlanan ekipman yükünü hesaplayalım ve darboğazları belirleyelim. Bir üretim programı oluşturacağız ve fizibilitesi için üretim programını analiz edeceğiz.

Üretim programında darboğazların belirlenmesi. Üretim planlanırken ekipman yüklemesinin hesaplanması ve dengesi.

Herhangi bir üretim müdürü düzenli olarak şu soruyu sorar: "Yapabilecek mi? tüm planlı siparişleri zamanında yapmak... İşletmenin üretim kapasitesi bunun için yeterli mi? Bu planlama döneminde beklenen çalışma ne kadar yoğun?"

Bu video, öncelikle aşağıdakilere izin veren TCS sisteminin modüllerini gösterecektir: ekipman yüklemesinin hacimsel göstergelerini hesaplamak ve analiz etmek ilgilenilen zaman diliminde ve ikinci olarak, üretim programını görselleştirin ilgilenilen ekipmanın yükünün aynı anda görüntülendiği bir Gantt şeması şeklinde.

Bu nedenle, TCS sistemindeki ilk veriler olarak, bitmiş ürünler için üretim siparişleri zaten oluşturulmuştur - çeşitli konfigürasyonlarda ve miktarlarda montaj dolapları ve stok standardını korumak için kendi üretimimizin birleşik bileşenlerinin üretimi için bir sipariş.

Bu siparişlerin her birinin tahmini bir çıkış tarihi vardır. Ticari ürün siparişleri için bu genellikle sözleşmenin şartlarıdır; dahili bir sipariş için bu, yaklaşık olarak ayın ortasıdır. Depoda, ayın ilk yarısı için siparişlerin toplanacağı belirli bir birleşik bileşen (yedek) stoğumuz olduğunu hatırlatalım. Ve ayın ortasına kadar yapılan iç siparişin kalemleri, depo rezervini yenilemek ve dönemin geri kalan siparişlerini toplamak için kullanılacaktır.

Bir sonraki adım, emtia kalemleri ve bileşenleri ile birleşik parçaların deposu için ayrı bir sipariş olarak üretilen bileşenlerin lansman tarihlerini hesaplamaktır. Planlama döneminin tüm üretim özelliklerini seçin ve makroyu çalıştırın " Lansman / çıkış tarihlerinin hesaplanması".

Sonuç olarak, üretilen tüm parçalar ve montaj birimleri için, belirtilen sürelere ve uygulanan teknolojik süreçlere göre hesaplanan yaklaşık üretim başlangıç ​​ve bitiş tarihleri ​​alırız.

Bu üretim spesifikasyonlarını uygulanabilir hale getirelim ve uygun sekmeye alalım. isimlendirme üretim planı... Üretilecek miktar ve zamanlama ile kalemleri listeler.

Bu nedenle, en erken toplu lansman tarihi 18 Şubat, en son sürüm tarihi 23 Mart 2010'dur.

Daha ayrıntılı bilgi, "Teknik süreç" sekmesinde, yani operasyon planında sunulmaktadır. Onlar. Planlanan tüm öğeleri üretmek için yapılması gereken tüm çalışmaların bir listesi. Her iş için uygulamasının karmaşıklığı hesaplanır ve teknolojik sürece uygun olarak ekipman, atölye, alan, meslek ve kategori görüntülenir.

Ayrıca TCS sistemi, işletmenin makine parkı, yani. her bir ekipman modelinin gerçek miktarı ve departmanlardaki mevcudiyeti. Örneğin, yedinci dükkanın ilk bölümünde bir Amada pres ve bir FINN-POWER pres, ikinci bölümde kaynak ekipmanları ve üçüncü bölümde montaj ve kontrol tablolarımız var.

Bu planın fizibilitesini değerlendirmek için TCS modülünü "" kullanıyoruz. Planlanan çalışmanın gerçekleştirileceği dönem olan 18 Şubat ve 23 Mart 2010 için başlangıç ​​ve bitiş tarihlerini belirleyeceğiz. Hesabı yapalım.

Hesaplama sonucunda, işe dahil olan tüm ekipman modellerinin bir listesi gösterilir. Hangi gruplara ait olduğu ve nerede bulunduğu belirtilir. Her model için çalışma süresi fonu, belirli bir süre için saat olarak hesaplanır. Hesaplama, departmandaki bu ekipmanın miktarını ve planlanmış onarım ve bakım programını dikkate alır. Ayrıca, bu ekipmanın toplamda kaç saat planlanmış işlemler yapmakla meşgul olacağı hesaplanır. Son sütun, planlanan yükü gösterir.

Uygulamada, işletmenin büyüklüğüne ve yapısına bağlı olarak, bu liste çok büyük olabilir (birçok atölye, bölüm, model). Böyle bir bilgi hacmiyle çalışmak gerçekten zor olabilir. Bu nedenle, kolaylık sağlamak için farklı ayarlar kullanabilirsiniz.

Örneğin, bizi ilgilendiren yalnızca bir birim için yükü gösterin. On ikinci dükkanın ilk bölümünü veya yedinci dükkanın ikinci bölümünü seçelim. Sadece bizi ilgilendiren indirmeyi gösterebilirsiniz Ekipman grupları, örneğin, Kontrol. Bu grubun ekipmanları işletmenin farklı bölümlerinde mevcuttur.

Üretim planımızda olası darboğazları hızlı bir şekilde belirlemek için yükleme eşiği... Planlanan dönemde yükü %70-80'i aşan ekipmanın sözde risk grubunu oluşturduğunu varsayarak %70'ini sunalım. Hatları daha az yük ile gizleyelim. Örneğimizde, yalnızca FINN-POWER hidrolik taret presi %70'ten fazla yüklenecektir, yani. Mart planı için darboğaz bu.

Bu ekipmanın kazara arızalanması, tüm planın olmasa da, planlanan dönemdeki birçok siparişin yürütülmesinde aksamalara neden olabilir. Bu genellikle sadece mali cezalara değil, aynı zamanda mali olmayan kayıplara da yol açar. Örneğin bu olumsuz olay işletmenin ticari itibarını etkileyebilir.

Hangi ekipmanlara özellikle dikkat etmeniz gerektiğini de birlikte inceleyelim. %50'lik bir eşik değeri giriyoruz ve bu tür çizgileri seçilen renkte basitçe renklendiriyoruz. FINN-POWER'a tahmini %57 yük ile bir Amada pres freni eklendi. İçlerindeki diğer tüm atölyeler ve ekipmanlar o kadar ağır yüklü değildir ve büyük olasılıkla planlamacının daha fazla dikkatini gerektirmez.

Böylece, "" modülünü kullanarak aşağıdaki sonuçlar çıkarılabilir:

Mümkün olup olmadığı, prensipte planımızdır. Bu değerlendirmenin kriteri, herhangi bir model için yükün %100'ünü aşacaktır. Bir yerde yük %100'den fazlaysa, üretim programını optimize etmenin hiçbir modern yöntemi yardımcı olmaz. Bu durumda, ekipman operasyon fonunun arttırılması gerekir, yani. ya süreyi uzatın ya da ikinci vardiyada çalışacak ek personel kiralayın ya da yakındaki ikinci bir ekipmanı çalıştırın.
Örnek planımız, yük değerinin %100'ü aşacağı tek bir pozisyona sahip değildir. Bu, en azından teorik olarak, mevcut ekipman kullanılarak belirli bir miktarda işin zamanında gerçekleştirilebileceği anlamına gelir. Planı üretimimizin gerçeklerinde uygulayacağız veya uygulamayacağız. Bu değerlendirme ayrıca, sunulan planın fizibilitesi hakkında, ancak teorik olarak değil, ilki gibi, ancak hayata daha yakın ve her bir üretimin bireysel özellikleri hakkında bir sonuca varmamızı sağlar. Örneğin, %99'luk ekipman yükünün, tüm sistemlerin kopyalandığı ve işletmede robotların çalıştığı, yalnızca arıza, gecikme ve aksama olmadan çalışma koşulları altında planın yerine getirilmesine izin vereceği açıktır. Gerçekte, çeşitli nedenlerle düzenli olarak arızalar ve gecikmeler meydana gelir. Ya malzeme zamanında getirilmedi, makine kurulmadı, işçi hastalandı, sonra elektrik şebekesinde bir kaza oldu vb. vesaire. Bu nedenle her işletmede, bu işletmenin farklı atölye ve bölümleri için veya farklı iş türleri için bile bu kriterin farklı bir anlamı vardır. Örneğin, bir alan için %80 yük, bir başka alan için %60 yük kritik kabul edilir.
Onlar. her bir iş veya alan türü için, deneyimli planlamacıların genellikle uygulamadan bildiği karşılık gelen bireysel eşik değeriyle bir karşılaştırma yapılabilir. İşletmedeki mevcut makine parkının yapısı üretim programına uygun mu? Bu sonuç, özellikle istikrarlı bir üretim programı olan işletmeler için faydalı olacaktır. üretim planı önceden oluşturulabilir ve aydan aya güçlü değişikliklere tabi değildir.
Örneğimizde, ekipman modellerinin çoğu %40 bile yüklenmezken, FINN-POWER presinin yükü kritik bir değere ulaşıyor. Seri üretimde benzer bir durum olsaydı, üretim hacmini artırmak için her şeyden önce satın alma ekipmanı satın almamız gerekirdi.

Organizasyonel yönetimi geliştirmek için karmaşık nesnelerin incelenmesi için bir başka yaygın problem formülasyonu, ekipmanın - hizmet cihazlarının, bireysel kanalların ve / veya fazların arıza süresini en aza indirerek nesnenin teknolojik şemasının verimliliğini artırma olasılıklarını incelemektir. Temsili bir süre için bir nesnenin nesnesinin işleyişini simüle ederek, karşılık gelen zamansal özellikleri elde edip analiz ederek, ekipmanın arıza süresinin nicel bir değerlendirmesi elde edilebilir.

Bu durumlarda örgütsel yönetimin amaç işlevi, (9.36)'ya benzer bir forma sahiptir:

v= min (9.39),

hizmete girmeden önce bir hizmet cihazının (veya bir kanalın veya ayrı bir fazın) uygun bir endeks seçimiyle) boşta kalma süresi nerede ben içindeki genel partiden -th gereksinimi n Gereksinimler.

Bu nedenle, tek kanallı tek fazlı nesneler için, tüm parti için servis cihazının toplam kapalı kalma süresi n gereksinimler ifade (9.8) ile belirlenir, bu nedenle, bu durumda otomatik dahil olmak üzere kurumsal yönetimin hedef işlevi şu şekildedir:

v=[1işareti (+ )] min (9.40).

Çok fazlı ve/veya çok kanallı nesneler için (9.16), (9.26) veya (9.34) tabanlı kuyruk sistemleri olarak benzer ifadeler elde edilebilir.

Bu durumda amaç fonksiyonunun v organizasyon yönetimi, taleplerin alınma aralıklarını, cihazların kullanım sürelerini, kanalları ve aşamaları ve ayrıca diğer zaman özelliklerini içerdiğinden, dikkate alınan ekipman arıza süresine ve diğer faktörlere ek olarak dikkate alınan karmaşık bir kriterdir. Bu nedenle, bu amaçta, gereksinimler için bekleme sürelerinde azalmaya yol açan önceki alt paragrafta belirtilen önlemleri uygularsak, bu aynı zamanda teknolojik nesnelerin ekipman yükünde bir artışa yol açacaktır, bu da birçok pratik durumda özellikle uygun hale getirir. Bu alt paragrafta ele alınan organizasyonel yönetim verimliliği kriterinin seçimi karmaşıktır.

3. Darboğazların belirlenmesi ve ortadan kaldırılması

Üretim sistemlerinde, teknolojik şemadaki bir "darboğaz", bir bütün olarak teknolojik şemadan daha düşük bir performansa sahip bir cihaz olarak adlandırılır, bu nedenle tesisteki genel hizmetin sınırlayıcı halkası olan kişidir. "Darboğazların" belirlenmesi, bir nesnenin üretkenliğini özellikle rasyonel olarak artırma sorununu belirlemeyi ve çözmeyi, belirli bir cihazla ilgili olarak bir "darboğaz" olan bir dizi örgütsel ve teknik önlemin uygulanmasını ve çözülmesini mümkün kılar. bir bütün olarak tüm teknolojik şema, çünkü ikincisi şüphesiz daha zor, daha uzun ve genellikle çok daha pahalıdır.

Sıklıkla darboğaz "zaman ve mekanda" değişkendir, yani E. nesnenin teknolojik rejimine ve çalışma koşullarına veya bireysel bağlantılarına veya bireysel ihtiyaç gruplarının veya sınıflarının teknolojik doğasına bağlı olarak (başka bir deyişle, belirli bir zaman aralığında nesnedeki belirli duruma bağlı olarak), biri veya diğeri aparat (veya kanal) servisi veya hatta ayrı bir aşama. Bu gibi durumlarda, simülasyon yoluyla "darboğazların" belirlenmesi, yönetim kararlarının etkinliğini doğrulamak, geliştirmek ve ardından doğrulamak için önemli bir nesne araştırması alanıdır. Bir "darboğazın" ortadan kaldırılmasının, uygulanmasından sonra bir "darboğaz" olan aygıtın artık böyle olmadığı ve bir bütün olarak üretimin işleyişini kısıtlamadığı bir organizasyonel ve teknolojik önlemler kompleksi anlamına geldiği açıktır.

Bir nesnenin teknolojik şemasında, QS olarak yorumlanan "darboğazların" varlığının bir işareti, cihazın (veya fazın) önündeki önceki birimlerde veya fazlarda bir kuyruk veya gecikme oluşmasıdır. darboğaz" ve tersine, aparatın (veya fazların) hemen ardından arıza süresi.

Bu bölümde yukarıda tartışılan tekniği kullanarak, resmi bir biçimde bir nesnede bir darboğazın varlığı ile durumu sunalım.

Örneğin, tek kanallı bir QS olarak bir nesnenin, akış şeması Şekil 9.5'e karşılık gelen, sıralı olarak yerleştirilmiş birkaç tek kanallı tek fazlı servis cihazından oluştuğunu varsayalım.

Şekil 9.5. Çok cihazlı tek kanallı bir QS şeması.

Bu CMO'nun teknolojik şemasına hizmet veren cihazlar endeks ile belirtilmiştir. k ve tam olarak k bunlardan biri darboğazdır. İzin vermek ben-th gereksinimi belirtilen şekilde hizmet ediliyor k belirli bir süre için cihaz ve bu cihaza daha önce alınan talebe göre bir aralıklarla geldi.

Bir öncekinde ( k1) -inci cihaz, orada bulunan istek zaten servisini tamamladı ve serbest bırakılmayı bekliyor k cihaz; belki girişte ( k1) -th cihazının hizmet bekleyen bir isteği daha var. Böylece, durum ( k1) -th aygıtı zaman özelliği (9.4) ile yansıtılır:

= +  +> için (9.41);

Sonraki, ( k+1) -th aparatı boşta, bu nedenle, bunun için, genel durumda, (9.8)'e dayanarak:

=  için> + için [ k+1, ...,n] (9.42).

doğrudan gelince k Bir "darboğaz" olan teknolojik şemanın -th aygıtı, daha sonra özellikle onun için hem (9.41) hem de (9.42), çalışmasını spesifik olarak neyin sınırladığına veya bir talebe hizmet vermeye başlamasına bağlı olarak geçerli olabilir (yani. cihazın girişi; belki çok fazlı ise hizmetin ilk aşamaları, vb.) veya durumu (iç elemanlar, aralarındaki bağlantılar, son aşamalar vb.)

Örgütsel yönetimin amaç işlevi v"darboğazı" ortadan kaldırmayı ve böylece tüm teknolojik planın verimliliğini artırmayı amaçlayan , aşağıdaki genel forma sahiptir:

v=(9.43).

Benzer şekilde, diğer nesne yapıları ve diğer hizmet disiplinleri için ifadeler elde edilebilir. Çalışmanın çeşitli koşulları ile ilgili olarak bir bilgisayarda incelenen nesnenin bir simülasyon modelini uygulamış ve her bir bileşen ve / veya teknolojik şema için kriter (9.41) ve (9.42) değerlerini nicel bir biçimde elde etmiş olmak, ki bu her zaman yapılabilir, bu sonuçlardan verilen teknolojik şemada "darboğaz" olup olmadığını ve nesnenin hangi özel bileşenini ve hangi özel koşullarda olduğunu belirlemek kolaydır. Bundan sonra, "darboğazı" ortadan kaldırmak için bir dizi organizasyonel ve teknik önlem önerebilirsiniz (üretim akış şemasının bu yerinde hizmet gereksinimlerinin paralelleştirilmesi, hızlandırılmış teknolojiler, yani önemli ölçüde daha hızlı hizmet ve buna bağlı olarak daha düşük ortalama ile, vb.), nesnenin aynı simülasyon modelinde etkinliklerini kontrol edin.

5.3 Darboğazların sınıflandırılması

Dar ve geniş yerler, akış kapasitelerinin hesaplanana göre daha az veya daha fazla olması gerçeğiyle ilişkili dengesizlik türleridir.

Üretim sistemi kendisine verilen hesaplanmış oranlar dahilinde uzun süre çalışamaz. Başlangıçta bu durumda olsa bile, daha sonra çeşitli faktörlerin (teçhizatın fiziksel aşınması ve yıpranması, bilimsel ve teknolojik ilerleme, ileri deneyimlerin kullanılması vb.) etkisi altında, bireysel aşamaların üretim kapasiteleri değişir (azalır veya artar). ) ve düzensiz. Bu orantısızlıkların ve özellikle darboğazların ana nedenlerinden biridir. Ayrıca üretim sistemlerinin tasarım aşamasında dengesizlikler oluşturulabilir. Kasıtlı olarak tasarlanabilirler veya yanlış tasarım kararlarının sonucu olabilirler. Kasıtlı olarak oluşturulan dengesizlikler (geniş alanlar), kapasitelerin dinamizm faktörünü hesaba katma ihtiyacı nedeniyle belirli ekipman türlerinin (statik elemanlar) kapasitelerinin ekonomik olarak gerekçeli rezervasyonunun sonucudur.

Dengesizliklerin ortaya çıkmasına (hem dar hem de geniş alanlar) yol açan yanlış tasarım kararlarının nedeni, üretimi organize etmek için zayıf gelişmiş bir teorik ve metodolojik temeldir.

Bu nedenle, darboğazların sınıflandırılmasının ilk işareti olarak, meydana geldikleri alanın işaretini kullanıyoruz. Bu kritere göre darboğazlar, tasarım aşamasında ve üretim sistemlerinin işletilme aşamasında yaratılanlara ayrılabilir.

İkinci bir sınıflandırma kriteri olarak darboğazların ekonomik değerlendirme kriterini kullanabilirsiniz. Bu kritere göre, ekonomik olarak uygun ve uygunsuz olarak ayrılabilirler. Bugün, kural olarak, darboğaz kavramını, onu ortadan kaldırmayı amaçlayan bir dizi teknolojik ve organizasyonel önlem alma ihtiyacı ile ilişkilendiriyoruz. Ancak her darboğazın kaldırılması gerekiyor mu? Burada ekonomik bir yaklaşıma ihtiyaç var. Bir darboğazın ortadan kaldırılması, belirli kayıplar ve maliyetlerle ilişkilidir: bazı durumlarda bu, bir süreliğine durmayı gerektirebilir.

LLC "Orenburg radyatörü" örneğinde emek organizasyonunun analizi

işbirliği iş bölümü rejimi İş organizasyonunun önemli bir parçası işyerlerinin organizasyonudur. İşyeri, üretimdeki birincil bağlantı, bir işçinin veya bir grup işçinin çalışma faaliyet alanıdır (işyeri kolektif ise) ...

Emek organizasyonunun durumunun analizi ve bireysel emek süreçlerinin tasarımı

Bireysel girişimci Emelyanova A.Ş.'nin faaliyetleri

1. İşletmenin dış faaliyetleri, müşterilerle çalışır. Girişimci, Magnitogorsk'un yakın semtlerinde oldukça iyi bilinmesine rağmen, girişiminin reklamını tamamen görmezden geliyor. Bu nedenle, uzak ve hatta komşu ...

Ekonomik faaliyetlerin kapsamlı bir analizi için metodoloji

Herhangi bir gösterge için, analiz edilen değerler seti, en iyiden en kötüye doğru sıralanır, böylece en iyi değer ilk sıraya, sonrakine - ikinciye vb. atanır. alınan yerler özetlenir ...

Emek süreçleri çalışmasına dayalı emek organizasyonu

Bir işyerini organize etmenin asıl görevi, işçilerin hareketinin en az yorucu ve en üretken olacağı çalışma koşullarını yaratmaktır. İş yeri, emeğin uygulama alanıdır...

Kamu catering işletmesi "Üç Elms" de emek organizasyonu

· Rasyonel çalışma teknikleri ve yöntemlerinin geliştirilmesi · Emeğin tayınlanması · Sağlıklı ve güvenli çalışma koşullarının sağlanması · Emek için ücret ve maddi teşviklerin organizasyonu · İş disiplinini teşvik etmek Adı geçenlerden dördü ...

Kurumsal planlama

Üretim kapasitesini hesaplamak ve üretim darboğazlarını belirlemek için işletme için bir üretim kapasitesi dengesi oluşturmak gerekir (tablo 2) ...

Fermente sütlü içeceklerin üretiminin planlanması ve organizasyonu

Darboğazlar, üretim kapasitesinin kurulu olduğu öncü bağlantının kapasitesine karşılık gelmeyen atölyeler, bölümler, birimler, tesisler ve ekipman grupları, ana ve yardımcı üretimdir ...

İşletmenin yapısı kavramı, özellikleri

· Basit işyeri (tek parça ekipman, bir işçi); Çok istasyonlu işyeri - bir işçi birkaç tür ekipmana hizmet eder (kural olarak ...

Belirli bir programa göre sitenin teknik ve ekonomik göstergelerinin hesaplanması

İşyeri, bir veya daha fazla işçi tarafından hizmet verilen üretim sürecinin örgütsel olarak bölünmez (belirli koşullarda) bir bağlantısıdır ...

Bir parçanın teknolojik üretim maliyetinin hesaplanması

3'e eşit iş sayısını kabul ediyorum ...

ZMZ-53 motorunun silindir gömleğinin restorasyonu için ATP onarım bölümünün teknik ve ekonomik göstergelerinin hesaplanması

Parça onarım programının uygulanması için gerekli ekipman miktarı ve maliyeti, ekipman adetine göre her işlem için ayrı ayrı hesaplanır. Mesaj sayısını hesaplamak için ...

İş yeri, icracının veya bir grup icracının iş faaliyetinin yürütüldüğü, bir işi veya işlemi ortaklaşa gerçekleştiren gerekli teknik araçlarla donatılmış bir alan olarak anlaşılmaktadır ...

İşyerlerinin organizasyonunu ve bakımını iyileştirmek

Büyük önem taşıyan, işlevsel olarak birbirine bağlı üretim araçlarının (ekipman, alet ...

İstatistik, kodun %20'sinin zamanın %80'inde yürütüldüğüdür. Onun doğruluğu
gerçek duruma neredeyse tam olarak tekabül etmez, ancak genel anlamı
oldukça ilginç: tüm uygulamayı optimize etmenin bir meslek olduğu ortaya çıktı
nankör ve aptal ve sadece bunların optimizasyonu
Tamamlanması en uzun süren uygulamaların %20'si. Üstelik bu %20'yi bulmak öyle değil.
ve zor.

Bu yazıda bahsedeceğimiz profil oluşturma... Wikipedia'ya göre,
profil oluşturma, "programın özelliklerini toplamaktan başka bir şey değildir.
bireysel parçaların yürütme süresi olarak, doğru tahmin edilen koşullu
geçişler, önbellek kaçırma sayısı vb. "Rusça'ya çevrildi, bu
"program darboğazlarını belirlemek" anlamına gelir (veya Anglofillerin dediği gibi,
"darboğazlar"), yani - programın içinde bulunduğu kodun tüm bölümleri
kullanıcıyı beklemeye zorlayarak "kaymaya" başlar.

En basit profilleme çıplak elle yapılabilir (ve aşağıda göstereceğim
nasıl yapılır), ancak, temsilcileri olan topluluğa güvenmek daha iyidir.
gerekli tüm araçları zaten oluşturduk. İlk ve en popüler araç
GNU Profiler (veya gprof) olarak adlandırılır. Yüzyıllardır kullanılıyor
GCC derleyicisi tarafından oluşturulan kodun profillenmesi. İkincisi GNU Kapsamı
test aracı (gcov), daha ayrıntılı performans analizi için bir yardımcı programdır.
Üçüncüsü, Google genel adı altında bir dizi hata ayıklama ve profil oluşturma aracıdır.
Performans Araçları (GPT olarak kısaltılır). Dördüncüsü Valgrind, en azından
ve bellekle çalışırken hataları aramak için tasarlanmıştır, ancak cephaneliğinde içerir
program performansını analiz etmek için bir dizi yardımcı program.

Beklendiği gibi klasiklerle başlayalım.

GNU Profil Oluşturucusu

GNU Profilcisi(gprof), mevcut en eski profil oluşturuculardan biridir.
UNIX gibi işletim sistemleri. gcc paketinin bir parçasıdır, bu nedenle
desteklenen herhangi bir dilde yazılmış profil oluşturma programları için kullanılabilir
onların dili (ve bu sadece C / C ++ değil, aynı zamanda Objective-C, Ada, Java).

Gprof'un kendisi bir profil oluşturma aracı değildir, yalnızca
sırasında uygulama tarafından toplanan profil istatistiklerini görüntüleyin.
çalışır (söylemeye gerek yok, hiçbir uygulama bunu varsayılan olarak yapmaz,
ancak programı "-pg" argümanıyla oluşturursanız başlayabilir).

Bunun gerçek hayatta nasıl çalıştığını görelim. Her şeyi hissetmek
gprof'un avantajlarından dolayı, onu bazı soyut, yapay
oluşturulan uygulamaya, ancak her gün kullanılan gerçek uygulamaya. İzin vermek
bu gzip olacak.

Arşivleyicinin kaynaklarını alıp paketini açıyoruz:

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

Derleme için gerekli araçları kurun (Ubuntu'da bu yapılır
build-essential meta paketinin kurulumu yoluyla):

$ sudo apt-get install build-essential

Argümanı CFLAGS ortam değişkeninde ileterek yapı yapılandırıcısını başlatın
"-pg":

$ CFLAGS = "- pg" ./configure

Programı derleyin:

Artık kendi istatistiklerini tutabilen bir gzip ikili dosyamız var.
uygulamak. Her lansmanına gmon.out dosyasının oluşturulması eşlik edecek:


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

Bu dosyanın insan tarafından okunabilir olması amaçlanmamıştır, ancak şu amaçlarla kullanılabilir:
ayrıntılı bir yürütme raporu oluşturma:

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

Ortaya çıkan dosyanın en önemli kısmı ekran görüntüsünde gösterilmektedir.

Her satır, bir işlevin yürütülmesinin istatistikleridir, sütunlar farklıdır
göstergeler. Birinci, üçüncü, dördüncü ve yedinci sütunlarla ilgileniyoruz. Onlar
yürütmek için harcanan toplam süre hakkında bilgi görüntüleme
fonksiyonlar (ilk sütun - yüzde olarak, üçüncü - saniye olarak), sayısı
aramalar ve isim.

Raporu analiz etmeye çalışalım. Listedeki ilk, deflate işlevidir,
bu yalnızca bir kez çağrıldı, ancak tüm yürütme süresinin %29'unu "silip süpürdü"
programlar. Bu, sıkıştırma algoritmasının uygulanmasıdır ve eğer karşı karşıya kalırsak
gzip'i optimize etme görevi, onunla başlamamız gerekecekti. zamanın %22'si
long_match işlevini yürütmek için gerekliydi, ancak deflate'den farklı olarak
450 613 081 kez çağrıldı, bu nedenle her bir ayrı işlev çağrısı
ihmal edilebilir zaman miktarı. Bu, optimizasyon için ikinci adaydır. İşlev
fill_window, zamanın %13'ünü aldı ve "yalnızca" 22 180 kez çağrıldı.
Belki bu durumda optimizasyon sonuç verebilir.

Rapor dosyasını ortaya kaydırdıktan sonra (bu arada, tablodan hemen sonra ayrıntılı bir
çok uygun olan tüm sütunları hakkında yardım), sözde gideceğiz
Çağrı grafiği. Kayıtlara bölünmüş bir tablodur,
birbirinden noktalı çizgilerle ayrılır (tekrarlanan eksi işaretleri). Her biri
kayıt birkaç satırdan oluşurken, ikinci satır sağduyuya aykırı
anlam "birincil" olarak adlandırılır ve kaydın tahsis edildiği işlevi tanımlar.
Yukarıdaki satır, onu çağıran fonksiyonun açıklamasıdır ve aşağıda - çağrılan
ona.

Sütunlar aşağıdaki bilgileri içerir (soldan sağa): dizin (dizin,
sadece birincil satırda ve aslında hiçbir şey ifade etmiyor); zaman yüzdesi,
işlevi yürütmek için gereken (% zaman); harcanan zaman miktarı
saniyeler içinde yürütmek için (self); harcanan zaman miktarı
işlevin ve çağrılan tüm işlevlerin yürütülmesi (çocuklar); arama sayısı
işlev (çağrılan) ve adı (ad).

Optimizasyon söz konusu olduğunda çağrı grafiği çok faydalıdır
başkasının kodu. Yalnızca programın darboğazları değil, tüm mantığı görünür hale gelir.
kaynağı incelerken açık olmayabilecek eseri.

GNU Kapsama test aracı

Gprof'a ek olarak, GCC derleyicisi başka bir araç içerir
daha ayrıntılı bir ilerleme raporu almanızı sağlayan profil oluşturma
uygulamalar. Yardımcı programın adı gcov'dur ve bu şekilde oluşturulmak üzere tasarlanmıştır.
her satırın karşısındaki açıklamalı kaynak kodu denir
performanslarının sayısını içerir. Bu daha derin için gerekli olabilir
"frenlerden" sorumlu fonksiyonlar bulunduğunda uygulama problemlerini incelemek ve
sorunun özü belirsizliğini koruyor (örneğin, hangi satırın içinde olduğu açık değil).
uzun bir işlevin içindeki çoklu iç içe döngü şunlardan sorumludur:
performansta anormal düşüş).

Gcov, ile oluştururken uygulama tarafından oluşturulan istatistiklere güvenemez.
"-pg" bayrağıyla ve "-fprofile-arcs" ve "-ftest-coverage" bayraklarıyla yeniden oluşturmayı gerektirir:

$ CFLAGS = "- fprofile-arcs -ftest-coverage"
./yapılandır && yap

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

Her kaynak kod dosyası için, aşağıdakilere dayalı olarak bir çağrı grafiği oluşturulacaktır:
insan tarafından okunabilir açıklamalı oluşturabileceğiniz
kaynak:

$ gcov deflate.c
"deflate.c" dosyası
Yürütülen satırlar: 139'un %76,98'i
deflate.c: "deflate.c.gcov" oluşturma

Ortaya çıkan dosyanın üç sütunu vardır: yürütme sayısı
satır, satır numarası ve satırın kendisi. Ayrıca kod içermeyen satırlar için
ilk sütunda eksi işareti olacak ve hiç tamamlanmamış satırlar için -
keskin nişancı dizisi: #####.

Google Performans Araçları

Google Performans Araçları(kısaltılmış GPT) Google çalışanları tarafından geliştirilmiştir,
bellek sızıntılarını ve uygulama darboğazlarını bulmak için tasarlanmıştır. gprof gibi,
GPT, test edilen uygulamanın dışında değildir ve
onu performansının istatistiklerini bağımsız olarak tutmaya zorlar. ancak
bunun için kod, uygulama oluşturma aşamasında enjekte edilmez, ancak
derleme zamanında uygulamaya bağlanabilen kitaplıklar veya
başlangıçta bağlı.

Geliştiriciler için toplamda iki eklenti kitaplığı mevcuttur: tcmalloc (ki,
GPT'nin yazarlarına göre, dünyanın en hızlı uygulamasıdır.
malloc işlevlerini ve ayrıca hafızanın nasıl olduğunu analiz etmenizi sağlar.
tüketilen, tahsis edilen ve akan) ve bir yürütme raporu oluşturan bir profil oluşturucu
gprof gibi programlar Ayrıca pprof yardımcı programı da dahildir,
birikmiş verilerin analizi ve görselleştirilmesi için tasarlanmıştır.

Tüm bu setin kaynak kodu, rpm ve deb paketleri şu adreste mevcuttur:
resmi sayfa (code.google.com/p/google-perftools), ancak yapmazdım
set mevcut olduğundan manuel kurulumla uğraşmanız önerilir.
standart Fedora ve Ubuntu depoları ve tek bir basit
komutla:

$ 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

Ancak, Google çalışanlarının kendileri bu yöntemin kullanılmasını önermemektedir (belli ki sorunlar nedeniyle
C ++ ile yazılmış programlarla), kitaplığı bağlamanız önerilir.
toplantı. Neyse tartışmayalım.

Deneyler için aynı gzip'i alıp yeniden oluşturalım,
ikili dosyayı gerekli kitaplıkla ilişkilendirme:

$ cd ~ / gzip-1.3.3
$ temizlemek
$ ./yapılandır
$ LDFLAGS = "- lprofiler" ./configure && make

Şimdi gzip, yürütmesini yeniden kaydetmeye hazırdır, ancak bunu yapmayacaktır.
varsayılan. Profil oluşturucuyu etkinleştirmek için bir değişken tanımlamanız gerekir.
ortam CPUPFOFILE ve ona profil dosyasının yolunu atayın:

$ CPUPROFILE = gzip-cpu-profile.log ./gzip \
~ / ubuntu-10.10-desktop-i386.iso
PROFİL: kesintiler / tahliyeler / baytlar = 4696/946/91976

gprof durumunda olduğu gibi, sonuç raporu ikili biçimdedir ve şu şekilde olabilir:
sadece özel bir yardımcı program kullanarak okuyun. GPT'de rolü şu kişiler tarafından oynanır:
perl betiği pprof (Ubuntu'da, aynı ada sahip başka bir yardımcı programla karıştırılmaması için
tablolardan daha fazlasını oluşturabilen google-pprof olarak yeniden adlandırıldı ve
gcov gibi açıklamalı kaynaklar, aynı zamanda görsel çağrı grafikleri. Toplam
bu yardımcı programın her biri atanmış 11 tür çıktısı vardır.
karşılık gelen komut satırı argümanı:

  1. Metin (--metin) - gprof çıktısına benzer bir tablo;
  2. Callgrind (--callgrind) - kcachegrind yardımcı programıyla uyumlu bir biçimde çıktı (valgrind paketinden);
  3. Grafiksel (--gv) - ekranda hemen görüntülenen çağrı grafiği;
  4. Listeleme (--list = ) - belirtilen işlevin açıklamalı listesi;
  5. Demonte listeleme (--disasm = ) - açıklamalı
    belirtilen işlevin demonte listesi;
  6. Sembolik (--semboller) - kodu çözülmüş sembolik isimlerin listesi;
  7. Grafik dosyası (--dot, --ps, --pdf, --gif) - çağrı grafiği kaydedildi
    bir dosyaya;
  8. Raw (--raw) - ağ üzerinden iletim için bir ikili profil dosyası hazırlayın
    (yazdırılabilir karakterler kullanılarak kaydedilir).

Bizi en çok ilgilendiren metin ("--metin") ve grafiktir.
("--gv") çağrı türleri. Sadece uygulama hakkında tam bilgi verebilirler.
uygulama ve tüm sorun alanları. Metin çıktısı aşağıdaki gibi oluşturulur
yol:

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

Ekran görüntüsünde görebileceğiniz gibi, çıktı hepsini listeleyen bir tablodur.
bunların uygulanması için işlevler ve maliyetler. İlk bakışta çok benziyor
gprof yardımcı programı tarafından oluşturulan tablo, ancak değil. sadece olmak
kütüphane, GPT, program yürütme istatistiklerini aynı ayrıntıda tutamaz
ve doğrudan uygulamaya enjekte edilen kodun bunu tam olarak nasıl yaptığı. Bu nedenle, yerine
fonksiyonların çağrılması ve fonksiyonların çıkarılması ile ilgili tüm gerçeklerin kayıtları (ile derlenen programın davranışı
"-pg" bayrağıyla), GPT örnekleme adı verilen bir teknik kullanır. Saniyede yüz kez
kütüphane, görevi hakkında veri toplamak olan özel bir işlevi etkinleştirir.
programın şu anda yürütülmekte olduğu nokta ve kayıt
bu veriler arabelleğe alınır. Programın tamamlanmasının ardından, bu veriler üretmek için kullanılır ve
diske bir profil dosyası yazılır.

Bu nedenle pprof çıktısında fonksiyonun kaç kez çalıştırıldığına dair bir bilgi yoktur.
program çalışması sırasında neden oldu veya zamanın yüzde kaçı üzerinde harcandı
uygulamak. Bunun yerine, her fonksiyon için kontrol sayısı belirtilir.
o anda programın devreye girdiğinin öğrenildiği saat
bu işlevin yürütülmesi. Bu nedenle, her biri için verilen çek sayısı
işlevleri, yürütmenin toplam süresini güvenle sayabilirsiniz.

Diğer tüm açılardan, tablo gprof: by function on çıktısına çok benzer.
satır, sütun başına. Toplamda altı sütun vardır:

  1. Bu fonksiyon için kontrol sayısı;
  2. Diğer tüm program işlevleri için kontrol yüzdesi;
  3. Bu işlev ve tüm alt öğeleri için denetim sayısı;
  4. Toplam çek sayısının yüzdesi olarak aynı sayı;
  5. Fonksiyon adı.

İlk başta, yürütme süresini ölçmeye yönelik bu yaklaşım çok
kesin değil, ancak gprof ile elde edilen tabloları tablolarla karşılaştırırsanız
pprof, aynı resmi gösterdikleri anlaşılıyor. Ayrıca, GPT
bir değişken kullanarak saniyedeki kontrol sayısını değiştirmenize olanak sağlar
ortam CPUPROFILE_FREQUENCY, böylece doğruluk on, yüz artırılabilir
veya durum gerektiriyorsa bin kez (örneğin gerekirse
çok küçük bir programın yürütülmesini profilleyin).

GPT'nin gprof'a göre şüphesiz avantajı, temsil etme yeteneğidir.
bilgi grafik şeklinde. Bu pprof işlevini etkinleştirmek için
"--gv" bayrağıyla çalıştırın (bu arada, grafiği görüntülemek için kullanılacak
aynı adı taşıyan yardımcı program):

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

Bu işlevin yürütülmesinin bir sonucu olarak oluşturulan işlev çağrısı grafiği çok
görsel ve benzerlerine göre anlaşılması ve incelenmesi çok daha kolay
gprof komutu tarafından oluşturulan bir metin grafiği. Her birinin adı ve yürütme istatistikleri
fonksiyonlar, boyutu doğru orantılı olan dikdörtgenler içine yerleştirilir.
işlevi yürütmek için harcanan zaman miktarı. dikdörtgenin içinde
işlevin kendisini yürütmesinin ne kadar sürdüğüne ve işlevine ilişkin verileri yayınladı.
torunları (zaman çeklerde ölçülür). Dikdörtgenler arasındaki bağlantılar şunu gösterir:
arama fonksiyonlarının sırasına ve bağlantıların yanında belirtilen sayısal değerlere göre -
çağrılan işlevin ve tüm alt öğelerinin süresi boyunca.

GPT'nin bir diğer avantajı, farklı seviyeleri kullanma yeteneğidir.
Veri çıkışı için ayrıntı düzeyi, kullanıcının birimleri kendisinin seçmesine olanak tanır
ezici. Varsayılan olarak, böyle bir birim olarak bir işlev kullanılır, bu nedenle
herhangi bir pprof çıktısı mantıksal olarak fonksiyonlara bölünür. Ancak istenildiği takdirde
kaynak kod satırlarını kullanabileceğiniz kesirli birimler ("--lines" argümanı),
dosyalar ("--dosyalar") veya hatta fiziksel bellek adresleri ("--adresler"). Sayesinde
Bu GPT işlevi, aşağıdaki durumlarda darboğazları bulmak için çok uygundur.
büyük uygulamalarda performansı ilk analiz ettiğinizde
dosyaları ayırın, ardından işlevlere gidin ve sonunda sorunlu olanı bulun
kaynak kodu veya bellek adresleri düzeyinde yerleştirin.

Ve son şey. Yukarıda söylediğim gibi, GPT yalnızca iyi bir profil oluşturucu değildir,
ama aynı zamanda bellek sızıntılarını bulmak için bir araç, bu yüzden çok
bellek tüketimini analiz etme yeteneğinin hoş bir yan etkisi
başvuru. Bunu yapmak için uygulama destekle oluşturulmalı veya çalıştırılmalıdır.
tcmalloc kitaplığı ve HEAPPROFILE değişkeni, yerleştirme adresini içerir
profil dosyası. Örneğin:

$ LD_PRELOAD = / usr / lib / libtcmalloc.so.0.0.0 \
HEAPPROFILE = gzip-heap-profile.log \
./gzip ~ / ubuntu-10.10-desktop-i386.iso
Yığını izlemeye başlama
Yığın profilini gzip-heap-profile.log.0001.heap'e boşaltma (Çıkış)

0000.heap biten dosyaya eklenecektir. açıksa
bu dosyayı pprof yardımcı programına ekleyin ve "--text" bayrağını belirtin, tabloyu görüntüleyecektir.
işlevleri ve her birinin bellek tüketim düzeyi. Sütunlar aynı anlama gelir
bunun yerine normal profil oluşturma durumunda olduğu gibi aynı
çek sayısı ve yüzdeleri, tablo şimdi sayıyı içeriyor
tüketilen bellek ve toplam bellek tüketiminin yüzdesi.

Gerekirse, bu bilgiler grafiksel olarak elde edilebileceği gibi,
kırma ünitelerini değiştirin. Kütüphane çeşitli özelliklerle özelleştirilebilir
en kullanışlısı HEAP_PROFILE_MMAP olarak adlandırılan ortam değişkenleri.
mmap sistem çağrısı için profil oluşturmayı sağlar (varsayılan olarak GPT
yalnızca malloc, calloc, realloc ve new çağrılarına ilişkin istatistikleri toplar).

Valgrind hakkında birkaç söz

Makalenin son bölümünde, nasıl kullanılacağına hızlıca bir göz atacağız.
müzik aleti Valgrind profil uygulamaları için. Valgrind çok güçlü
gibi bellek hatalarını bulabilen bir bellek hata ayıklayıcı
diğer yardımcı programlar şüphelenmiyor bile. ile modüler bir mimariye sahiptir.
zamanla ilgili olmayan birkaç eklenti edinmesine izin verdi
doğrudan hata ayıklamaya. Toplamda bu tür üç eklenti vardır:

  1. Cachegrind - veri isabetleri hakkında istatistikler toplamanıza ve
    talimatları işlemcinin birinci ve ikinci seviyelerinin önbelleğine programlayın (güçlü ve
    profil oluşturma sırasında kullanışlı olan gelişmiş bir araç
    düşük seviyeli kod).
  2. Massif, işlevsellik açısından GPT karşılığına benzer bir yığın profil oluşturucudur.
  3. Callgrind, gprof ve GPT'ye çok benzeyen bir profil oluşturucudur.

Varsayılan olarak Valgrind, ana eklentisi olarak memcheck'i kullanır.
(bellek hata ayıklayıcı), bu nedenle onu profil oluşturma modunda çalıştırmak için
gerekli eklentiyi manuel olarak belirtin. Örneğin:

$ valgrind --tool = callgrind ./program

Bundan sonra, adlı bir dosya
yardımcı programla ayrıştırılabilen callgrind.out.PID programı
callgrind_annotate veya kcachegrind grafik programı (yüklü
ayrı ayrı). Bu programlar tarafından üretilen verilerin formatını açıklamayacağım.
(aynı adı taşıyan man sayfalarında iyi temsil edilir), sadece şunu söyleyebilirim ki
callgrind_annotate en iyi şekilde "--auto" bayrağıyla çalıştırılır, böylece
programın kaynak dosyalarını bağımsız olarak bulun.

Bellek kullanımını analiz etmek için Valgrind, "--tool = massif" argümanıyla çalıştırılmalıdır.
Bundan sonra, geçerli dizinde massif.out.PID program dosyası görünecektir.
ms_print yardımcı programı ile ayrıştırılabilir. pprof'tan farklı olarak,
verileri yalnızca standart bir tablo biçiminde görüntülemekle kalmaz, aynı zamanda
güzel ascii-art grafikler.

sonuçlar

gprof, gcov ve GPT gibi araçlar performans analizine olanak tanır
uygulama ve tüm darboğazlarını ayrı bir işlemciye kadar tanımlayın
talimatlar ve Valgrind'i profil oluşturma işlemine bağlayarak
harika sonuçlar.

BİLGİ

Varsayılan olarak gprof, işlevler için profil bilgilerini görüntülemez.
ancak libc6-prof paketi yüklenerek durum düzeltilebilir ve
test edilenleri libc_p kitaplığıyla oluşturma: "export LD_FLAGS =" - lc_p "".

GPT profil oluşturucuyu yalnızca bir ortam değişkeniyle değil, etkinleştirebilirsiniz
CPUPROFILE, aynı zamanda test edilen kod bölümünü ProfilerStart () işlevleriyle sararak
ve google / profiler.h'de bildirilen ProfilerStop ().

UYARI

Güvenlik gereksinimleri nedeniyle GPT, şu özelliklere sahip uygulamalarda çalışmayacaktır:
SUID bit seti ile.

Makaleyi beğendin mi? Paylaş