• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            如何調(diào)試 AIX 上的應(yīng)用程序

            Posted on 2012-03-02 15:26 Prayer 閱讀(982) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): LINUX/UNIX/AIX

            ----越來(lái)越多的用戶(hù)選擇了IBM的RS/6000服務(wù)器作為應(yīng)用程序的運(yùn)行平臺(tái),并且伴隨應(yīng)用程序復(fù)雜度的增加,給系統(tǒng)以及應(yīng)用程序的性能提出了進(jìn)一步的要求。在這里講解是如何在AIX環(huán)境中調(diào)試系統(tǒng)性能,找出具體的問(wèn)題和產(chǎn)生的原因,找到解決的辦法,使得應(yīng)用程序的反應(yīng)速度加快,以滿(mǎn)足用戶(hù)的需求。
              ----從性能角度來(lái)看,總體上分為:系統(tǒng)整體性能和應(yīng)用程序個(gè)體的性能。從性能調(diào)試的方法來(lái)講大體上是一致的,只是著重點(diǎn)和調(diào)試目標(biāo)的不同。在系統(tǒng)性能方面,是為了達(dá)到最大的系統(tǒng)吞吐量并減小反應(yīng)時(shí)間;在應(yīng)用程序方面,是為了減小反應(yīng)時(shí)間。
            ----性能調(diào)試就是使得應(yīng)用程序和系統(tǒng)的資源分配能夠最佳地符合當(dāng)前特定環(huán)境。
            ----性能調(diào)試的流程如下:
             首先判斷CPU是否是瓶頸,如果CPU是瓶頸則調(diào)試系統(tǒng)或應(yīng)用程序的參數(shù),增強(qiáng)CPU; 
             第二判斷內(nèi)存是否是瓶頸,調(diào)節(jié)系統(tǒng)和應(yīng)用程序關(guān)于內(nèi)存的參數(shù),使內(nèi)存的使用達(dá)到最佳; 
             第三判斷磁盤(pán)的輸入/輸出是否是瓶頸,調(diào)節(jié)磁盤(pán)的使用狀態(tài)及參數(shù),減少輸入/輸出時(shí)間; 
             第四判斷網(wǎng)絡(luò)是否是瓶頸,調(diào)節(jié)網(wǎng)絡(luò)環(huán)境或應(yīng)用程序訪問(wèn)方式,增加網(wǎng)絡(luò)吞吐量或減小網(wǎng)絡(luò)壓力;
             第五附加的測(cè)試跟蹤,使用附加工具生成分析報(bào)表。
             
              ----這里開(kāi)始對(duì)每一個(gè)步驟進(jìn)一步的闡述。 
                ----對(duì)于每一個(gè)進(jìn)程來(lái)講,它們都有進(jìn)程優(yōu)先級(jí),計(jì)算公式為:PRI=NICE+40+CPU_ PENALTY,從公式中可以看到基本上用戶(hù)進(jìn)程的優(yōu)先級(jí)是大于40的。可以使用“ps -l”和“ps -emo THREAD”命令分別查尋進(jìn)程和線(xiàn)程的CPU使用狀態(tài)。使用“nice -n proname”和“renice +n proid”來(lái)修改進(jìn)程的優(yōu)先級(jí)。
             
              ----對(duì)CPU的整體調(diào)試過(guò)程可以總結(jié)如下:
                首先使用“iostat”、“vmstat”和“sar”命令查看是否CPU有瓶頸,以及使用狀態(tài);
              使用“ps”命令查看哪條進(jìn)程占用大量CPU時(shí)間; 
              使用“prof”、“gprof”和“tprof”命令查看特定的應(yīng)用程序中哪些或哪一條語(yǔ)句占用CPU過(guò)長(zhǎng);
            ----改應(yīng)用程序代碼,優(yōu)化程序,對(duì)于十分消耗CPU資源的數(shù)學(xué)算法調(diào)用要使用AIX系統(tǒng)提供的函數(shù)庫(kù)BLAS/ESSL中的數(shù)學(xué)算法,這些算法函數(shù)要比程序員自己開(kāi)發(fā)的函數(shù)節(jié)省系統(tǒng)資源。
            ----此外,在編譯可執(zhí)行文件時(shí),使用優(yōu)化參數(shù)對(duì)程序進(jìn)行進(jìn)一步優(yōu)化。
            ----對(duì)于CPU的消耗在很多情況下是由應(yīng)用程序引起的,在應(yīng)用程序優(yōu)化完成以后,如果CPU依然沒(méi)有很大的改善,這就需要對(duì)CPU直接進(jìn)行升級(jí)了,要么就增加CPU的個(gè)數(shù)。這里還有兩個(gè)命令在應(yīng)用程序調(diào)試時(shí)十分有用:“time”和“timex”。這兩個(gè)命令可以檢測(cè)出某個(gè)應(yīng)用程序從開(kāi)始到結(jié)束總共花費(fèi)的時(shí)間,“time”返回分鐘數(shù)和秒數(shù),“timex”返回總共的秒數(shù)。
            ----在判斷和調(diào)試系統(tǒng)內(nèi)存之前,首先要了解內(nèi)存訪問(wèn)的概念。內(nèi)存在大多數(shù)情況下指虛擬內(nèi)存,其中包括實(shí)內(nèi)存(Real Memory)和磁盤(pán)上的虛擬空間(Paging Space)。值得注意的是在AIX系統(tǒng)中,實(shí)內(nèi)存的輸入/輸出不僅在磁盤(pán)虛擬空間之間產(chǎn)生,而且包括另外兩種形式:固定數(shù)據(jù)文件(Persistent Segment)和遠(yuǎn)程數(shù)據(jù)文件(Client Segment)。為了減少磁盤(pán)的尋址時(shí)間,磁盤(pán)虛擬空間往往采用連續(xù)的存儲(chǔ)空間。
            ----檢測(cè)系統(tǒng)內(nèi)存的使用情況主要使用命令“vmstat”,此命令可以查看到活動(dòng)的虛擬空間和剩余的實(shí)內(nèi)存、內(nèi)存頁(yè)的輸入/輸出狀態(tài)和CPU是否有輸入/輸出空閑。在分析統(tǒng)計(jì)調(diào)試結(jié)果時(shí),一定要注意上面提到的實(shí)內(nèi)存輸入/輸出的三種途徑。
            ----使用“ps au”命令可以查看每條進(jìn)程的內(nèi)存占有情況,數(shù)據(jù)是以百分比的方式顯示。
             
              ----還有一個(gè)命令十分有用,“svmon”,這個(gè)命令幫助調(diào)試者進(jìn)一步取得有關(guān)進(jìn)程使用內(nèi)存的信息,它可以生成當(dāng)前使用內(nèi)存最多的進(jìn)程狀態(tài)報(bào)表。SVMON命令和VMSTAT命令可以配合使用,它們的返回結(jié)果有一部分是相互重疊的,由此也可以驗(yàn)證進(jìn)程使用內(nèi)存狀態(tài)的真實(shí)性。另外,SVMON命令還可以分析出來(lái)指定進(jìn)程在使用內(nèi)存方面的細(xì)節(jié),究竟是哪些程序片占用了哪些內(nèi)存,參數(shù)是“-P”。
              ----命令“vmtune”用來(lái)修改操作系統(tǒng)與內(nèi)存使用相關(guān)的系統(tǒng)參數(shù)。通過(guò)修改內(nèi)存系統(tǒng)參數(shù)可以改變系統(tǒng)對(duì)內(nèi)存使用的方式以及分配原則,從而調(diào)節(jié)內(nèi)存的輸入/輸出。
              ----在內(nèi)存的使用中有一個(gè)現(xiàn)象稱(chēng)為“Thrashing”,即內(nèi)存使用產(chǎn)生抖動(dòng)現(xiàn)象,為了滿(mǎn)足某些進(jìn)程的執(zhí)行,不斷地對(duì)內(nèi)存進(jìn)行輸入/輸出,當(dāng)系統(tǒng)發(fā)現(xiàn)將要產(chǎn)生這種現(xiàn)象時(shí),就會(huì)暫停某些進(jìn)程使內(nèi)存抖動(dòng)現(xiàn)象不再發(fā)生。抖動(dòng)現(xiàn)象會(huì)影響某些進(jìn)程的反應(yīng)速度,要盡量避免內(nèi)存抖動(dòng)的產(chǎn)生。內(nèi)存抖動(dòng)是由磁盤(pán)虛擬空間分配沖突造成的,磁盤(pán)虛擬空間對(duì)應(yīng)用程序進(jìn)程來(lái)講不夠大。
              ----在磁盤(pán)的讀寫(xiě)方面是與AIX操作系統(tǒng)的磁盤(pán)管理相關(guān)的。AIX操作系統(tǒng)的磁盤(pán)管理分為四個(gè)層次:
              ----文件/目錄、文件系統(tǒng)、邏輯卷和物理卷。訪問(wèn)磁盤(pán)的適配器目前基本上有四類(lèi):SCSI-1、SCSI-2、SSA和HIPPI。它們的訪問(wèn)吞吐量是從低到高。數(shù)據(jù)存放在磁盤(pán)分區(qū)的不同也會(huì)影響訪問(wèn)速度,總的來(lái)說(shuō),存放在磁盤(pán)中心最快,從中心向兩側(cè)訪問(wèn)速度逐漸降低(尋址時(shí)間會(huì)加長(zhǎng))。這里有五個(gè)系統(tǒng)參數(shù)在定義邏輯卷的時(shí)候可供選擇:“Inner Edge”、“Inner Middle”、“Center”、“Outer Middle”和“Outer Edge”。使用“iostat”命令可以查看每一塊磁盤(pán)使用情況,如果是多塊磁盤(pán),可以檢測(cè)到磁盤(pán)資源是否平均利用,磁盤(pán)輸入/輸出等待的百分比和整個(gè)磁盤(pán)的吞吐量等。還有一條命令“filemon”,這條命令可以收集到各個(gè)層面的訪問(wèn)信息,包括文件系統(tǒng)、虛擬內(nèi)存和物理磁盤(pán)。
              ----此命令將收集到的信息輸出到一個(gè)文件中,在信息文件中可以查詢(xún)到邏輯卷的輸入/輸出量,訪問(wèn)的文件名,讀/寫(xiě)的塊數(shù)、其中順序讀/寫(xiě)的塊數(shù)分別是多少,磁盤(pán)尋址所占整個(gè)時(shí)間的百分比。使用命令“lslv ”和“lslv -l ”可以查到指定的邏輯卷所存放的物理磁盤(pán)位置,以及實(shí)際的命中率。當(dāng)發(fā)現(xiàn)磁盤(pán)讀寫(xiě)量較大,CPU的輸入/輸出等待較多,但磁盤(pán)的使用比較均衡,這時(shí)就需要提高適配器的性能,增加適配器的吞吐量,可以增加磁盤(pán)適配器個(gè)數(shù)或者高一級(jí)的適配器。
              ----可以使用“vmtune”命令調(diào)高與邏輯卷相關(guān)的參數(shù)“hd_pbuf_cnt”,當(dāng)使用命令“filemon”命令發(fā)現(xiàn)磁盤(pán)輸入/輸出大部分是順序讀寫(xiě)的時(shí)候,調(diào)高參數(shù)“hd_pbuf_cnt”值會(huì)改善系統(tǒng)性能。
              ----上面講到的調(diào)試方法大都直接與物理設(shè)備有關(guān),下面來(lái)介紹以下如何調(diào)節(jié)文件系統(tǒng)的性能。文件系統(tǒng)的訪問(wèn)包括邏輯文件系統(tǒng)、虛擬磁盤(pán)空間管理、裸設(shè)備讀寫(xiě)和邏輯卷管理,并且系統(tǒng)對(duì)于單個(gè)文件的訪問(wèn)也根據(jù)文件的大小分為三種訪問(wèn)機(jī)制:小于32K的文件直接訪問(wèn)、大于32K且小于4M的文件通過(guò)一層索引塊尋址、大于4M的文件通過(guò)兩層索引塊尋址。另外,在性能調(diào)試時(shí)應(yīng)該考慮文件存放的物理位置是否是連續(xù)的(有幾個(gè)斷點(diǎn))和該文件空間與文件存放所占用的連續(xù)物理空間的比例,這兩個(gè)因素都會(huì)影響文件訪問(wèn)時(shí)的尋址時(shí)間。可以使用“fileplace”命令統(tǒng)計(jì)出指定文件的這兩個(gè)數(shù)值。第一個(gè)參考值為“seqentiality”,其計(jì)算方式為(文件總的塊數(shù)-中斷次數(shù))/文件總的塊數(shù);第二個(gè)參考值為“space efficiency”,其計(jì)算方式為(文件總的塊數(shù)/文件存放占用區(qū)域的連續(xù)塊數(shù))。兩個(gè)值都是越大越好。在AIX系統(tǒng)中存在一個(gè)文件系統(tǒng)日志,名為“JFS Log”;這個(gè)文件日志同樣會(huì)搶占磁盤(pán)的輸入/輸出,這個(gè)文件日志應(yīng)該與使用的文件系統(tǒng)處于不同的物理磁盤(pán)上。
              ----對(duì)于有的應(yīng)用程序可以利用AIX操作系統(tǒng)提供的裸設(shè)備(Row Device)存儲(chǔ)方式,例如UDB關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)可以將自身的表空間(Tablespace)和數(shù)據(jù)庫(kù)日志存放在裸設(shè)備上,這樣就提高了數(shù)據(jù)存取的速度。
              ----當(dāng)發(fā)現(xiàn)文件系統(tǒng)中文件出現(xiàn)過(guò)多的斷點(diǎn)時(shí),可以對(duì)文件系統(tǒng)進(jìn)行重整。此項(xiàng)工作可以通過(guò)系統(tǒng)提供的“smit”工具完成,也可以調(diào)用命令“defragfs”。但為了安全起見(jiàn),在進(jìn)行這項(xiàng)工作之前要確保已經(jīng)對(duì)當(dāng)前的文件系統(tǒng)做了備份,最好有兩份。這里還要提到兩個(gè)參數(shù):“numfsbufs”和“lvm_bufcnt”,如果應(yīng)用程序有大量向高速輸入/輸出端口的寫(xiě)操作,調(diào)高這兩個(gè)參數(shù)會(huì)提高應(yīng)用程序的訪問(wèn)速度。參數(shù)“lvm_bufcnt”只對(duì)向裸設(shè)備的輸入/輸出操作起作用。
              ----網(wǎng)絡(luò)性能和網(wǎng)絡(luò)構(gòu)架有直接關(guān)系,主要取決與網(wǎng)絡(luò)每秒的傳輸速率。有兩個(gè)命令可以查看網(wǎng)絡(luò)當(dāng)前使用的狀態(tài),它們是:“netstat”和“netpmon”。這兩個(gè)命令分別可以看到不同的網(wǎng)絡(luò)使用信息,其中“netpmon”可以查看到非常細(xì)致的網(wǎng)絡(luò)上的傳輸使用狀態(tài)。對(duì)網(wǎng)絡(luò)的調(diào)試命令有下列三種:“no”、“chdev”和“ifconfig”,通過(guò)這三個(gè)調(diào)試命令調(diào)試網(wǎng)絡(luò)相關(guān)參數(shù),提高網(wǎng)絡(luò)傳輸性能。
              ----在某些應(yīng)用程序中會(huì)對(duì)遠(yuǎn)程數(shù)據(jù)文件直接訪問(wèn),這就用到了NFS服務(wù)。查看NFS的使用狀態(tài)可以使用命令:“nfsstat”。有幾個(gè)參數(shù)會(huì)直接影響NFS的訪問(wèn)速度,“nfsd daemons”的個(gè)數(shù)、虛擬磁盤(pán)空間為文件分派的大小、傳輸和接受隊(duì)列的大小、參數(shù)“nfs_socketsize”和“sb_max”以及是否使用“Access Control Lists”。雖然網(wǎng)絡(luò)在特定的環(huán)境下,同樣是可以將性能調(diào)高的,但這里還是建議使用者將經(jīng)常訪問(wèn)的數(shù)據(jù)文件從遠(yuǎn)程復(fù)制到本地進(jìn)行讀寫(xiě)。
              ----在AIX操作系統(tǒng)中,系統(tǒng)提供了幾個(gè)性能跟蹤的程序:“trace”、“trcrpt”和一系列圖形工具。圖形工具包括:“PDT”、“perfpmr”、“PTX/6000”和“BEST/1”。通過(guò)使用這些附加的工具,可以進(jìn)一步對(duì)系統(tǒng)和應(yīng)用程序的使用狀態(tài)跟蹤調(diào)試。
              ----最后,讀者也許還記得在文章的開(kāi)始,提到對(duì)應(yīng)用程序的調(diào)試,這里強(qiáng)調(diào)的是,調(diào)試應(yīng)用程序是提高性能的最佳手段,對(duì)應(yīng)用程序的改善在某些情況下,會(huì)給性能帶來(lái)成倍的提高。而對(duì)系統(tǒng)參數(shù)的調(diào)節(jié)不會(huì)達(dá)到這種地步。系統(tǒng)性能的不足最終是通過(guò)增加系統(tǒng)硬件設(shè)備來(lái)解決的。此文只是提供讀者一個(gè)調(diào)試性能的清晰條理,真正的性能調(diào)試還要在具體項(xiàng)目中得以驗(yàn)證。讀者要記住何謂“性能調(diào)試”:在性能調(diào)試的過(guò)程中沒(méi)有一定之規(guī),就象做菜沒(méi)有菜譜一樣,這是一個(gè)仁者見(jiàn)仁、智者見(jiàn)智的事情。

             

            青青草原综合久久大伊人导航| 色青青草原桃花久久综合| 97热久久免费频精品99| 久久99精品国产99久久6| 亚洲国产精品综合久久网络| 思思久久99热只有频精品66| 日韩人妻无码精品久久久不卡| 99久久国产综合精品成人影院| 99久久做夜夜爱天天做精品| 99re久久精品国产首页2020| 少妇久久久久久被弄到高潮| 国产美女久久久| 国内高清久久久久久| 久久99精品国产99久久6| 久久亚洲精品成人av无码网站| 国产高潮国产高潮久久久91| 亚洲午夜久久久影院| 欧美国产成人久久精品| 四虎国产精品免费久久5151| 久久天天躁夜夜躁狠狠躁2022| 狠狠色综合网站久久久久久久| 人妻精品久久无码专区精东影业| 久久综合久久鬼色| 97精品国产97久久久久久免费| 久久久久亚洲Av无码专| 中文字幕精品久久| 人妻无码久久精品| 久久精品这里只有精99品| 久久久久久免费一区二区三区| 少妇精品久久久一区二区三区| 久久综合久久综合亚洲| 合区精品久久久中文字幕一区 | 久久久久久午夜成人影院 | 亚洲а∨天堂久久精品| 日本精品久久久中文字幕| 少妇高潮惨叫久久久久久| 国产农村妇女毛片精品久久| 色偷偷偷久久伊人大杳蕉| 国内精品伊人久久久久妇| 亚洲欧洲久久久精品| 亚洲AⅤ优女AV综合久久久|