1. 程式人生 > >系統技術非業餘研究 » systemtap全域性變數自動列印的原因和解決方法

系統技術非業餘研究 » systemtap全域性變數自動列印的原因和解決方法

在執行stap的時候,經常會發現在指令碼結束執行的時候打出了很多無預期的東西,仔細一看都是些全域性變數的dump, 這個問題比較煩人.

我來演示下:

$ cat > g.stp 
global xyz
probe begin{
  xyz=2010
  exit();
}
CTRL+D

$ sudo stap g.stp
xyz=0x7da
#多餘的顯示,其實我們只想靜悄悄的結束

查看了程式碼和文件發現:

A global declaration may be written at the outermost level anywhere, not
within a block of code. Global variables which are written but never read will be displayed automatically at session shutdown. The translator
will infer for each its value type, and if it is used as an array, its key types. Optionally, scalar globals may be initialized with a string or
number literal. The following declaration marks variables as global.

原來只寫不讀的通通要列印提醒你, 知道了原因就好辦了.

加多個delete把全域性變數清空,就沒啥好顯示了:

$ diff -up g1.stp g.stp 
--- g1.stp	2011-03-25 13:14:37.940594540 +0800
+++ g.stp	2011-03-25 13:12:59.470450112 +0800
@@ -1,5 +1,6 @@
 global xyz
 probe begin{
   xyz=2010
+delete xyz 
  exit();
 }

玩的開心.

Post Footer automatically generated by wp-posturl plugin

for wordpress.

相關推薦

系統技術業餘研究 » systemtap全域性變數自動列印原因解決方法

在執行stap的時候,經常會發現在指令碼結束執行的時候打出了很多無預期的東西,仔細一看都是些全域性變數的dump, 這個問題比較煩人. 我來演示下: $ cat > g.stp global xyz probe begin{ xyz=2010 exit(); } CT

系統技術業餘研究 » Erlang 網路密集型伺服器的瓶頸解決思路

最近我們的Erlang IO密集型的伺服器程式要做細緻的效能提升,從每秒40萬包處理提升到60萬目標,需要對程序和IO排程器的原理很熟悉,並且對行為進行微調,花了不少時間參閱了相關的文件和程式碼。 其中最有價值的二篇文章是: 1. Characterizing the Scalability of

系統技術業餘研究 » systemtap如何跟蹤libc.so

下午和周忱同學折騰複雜程式的記憶體洩漏問題,用了valgrind, gogle perftools等工具都不大好用,很容易把應用程式搞死,於是打算用systemtap來在libc.so層面瞭解記憶體的使用情況。主要思路就是看malloc/realloc和free的呼叫次數的平衡。 首先準備下環境,

系統技術業餘研究 » Systemtap輔助設定tcp_init_cwnd,免對作業系統打Patch

前段時間google的工程師提出對tcp的擁塞視窗的初始值進行增大可以顯著的提高http的效能,這個主要是針對tcp的slow start的優化. 具體參考這裡, 這裡. 謝謝叔度同學從美國帶回第一手資訊! 由於低版本的linux核心的問題,這個引數的正確設定需要對os打patch,這個過程對線

系統技術業餘研究 » Systemtap的另類用法

通常我們在做核心程式設計的時候,會用到核心的資料結構,比如說textsearch提供了幾種演算法用於支付串查詢。在用於正式的專案前,我們會希望考察下他的用法以及想體驗下。最通常的做法是自己寫個module,寫個makefile,編譯,執行,然後去dmesg裡面看printk的結果。這個過程沒啥問題

系統技術業餘研究 » systemtap觀察page_cache的使用情況

在規劃伺服器的記憶體使用的時候經常需要知道應用在理想情況下會使用多少的pagecache, 我們好預先把這個記憶體預留出來. 這個值作業系統沒有提供可檢視的管道,我們只能自己寫個指令碼來實現. 下面的systemtap指令碼每隔N秒顯示下當前os下頭10個檔案佔用多少的pagecache, 降序

系統技術業餘研究 » systemtap函式呼叫棧資訊不齊的原因解決方法

有時候在看系統程式碼的時候,我們很難從原始碼中看出我們感興趣的函式是如何被呼叫的,因為呼叫路徑有可能太多。使用者空間的程式gdb設斷點是個好的方法,核心的就麻煩了。這時候systemtap可以幫忙, 比如: $uname -r 2.6.18-164.el5 $stap -V Syste

系統技術業餘研究 » Erlang叢集RPC通道擁塞問題及解決方案

Erlang的叢集預設情況下是全聯通的,也就是當一個節點加入叢集的時候,介紹人會推薦叢集裡面所有的節點主動來和新加入的節點建立聯絡, 效果如下圖: 我們這次不講如何避免全聯通而是來講這個節點間通道的問題。 我們知道erlang的訊息傳送是透明的,只要呼叫Pid!Msg, 虛擬機器和叢集的基礎設

系統技術業餘研究 » gen_tcp:send的深度解刨使用指南(初稿)

在大家的印象中, gen_tcp:send是個很樸素的函式, 一呼叫資料就喀嚓喀嚓到了對端. 這是個很大的誤解, Erlang的otp文件寫的很不清楚. 而且這個功能對於大部分的網路程式是至關重要的, 它的使用對否極大了影響了應用的效能. 我聽到很多同學在抱怨erlang的效能低或者出了很奇怪的問

系統技術業餘研究 » 轉:CPU密集型計算 erlangC 大比拼

原文地址:http://pseudelia.wordpress.com/2009/08/23/erlang-native-code-benchmark/ Normalerweise compiliert Erlang Bytecode (heißt das so in Erlang?). Das

系統技術業餘研究 » vanilla_driver最高效的讀檔案行的方法

vanilla_driver是Erlang內建的驅動,用於高效讀取檔案控制代碼或者檔名,官方的文件沒記載. 我來挖掘下: [email protected]:~# cat >>hello.txt hello world CTRL+D [email prot

系統技術業餘研究 » 詳解伺服器記憶體頻寬計算使用情況測量

前段時間我們在MYSQL調優上發現有瓶頸,懷疑是過多拷貝記憶體,導致記憶體頻寬用完。在Linux下CPU的使用情況有top工具, IO裝置的使用情況有iostat工具,就是沒有記憶體使用情況的測量工具。 我們可以看到大量的memcpy和字串拷貝(可以用systemtap來測量),但是像簡單的資料移

系統技術業餘研究 » 用systemtap來修改下linux核心變數的值

我們在探索linux核心的時候,經常需要調整下變數的值,看它對系統的影響。如果這個值沒有透過/proc來修改的話,那隻能編譯核心。這個步驟是非常繁瑣的。現在我們有systemtap這個利器來幫忙了。 演示如下: 我們通過修改過 extern int sysctl_tcp_fin_timeout;的

系統技術業餘研究 » 突破systemtap指令碼對資源使用的限制

我們在使用指令碼收集系統資訊的時候經常會用到map這樣的資料結構存放結果,但是stap指令碼在使用過程中經常會提升說”ERROR: Array overflow, check MAXMAPENTRIES near identifier ‘a’ at test.stp:6:5″ 類似這樣的資訊,然後

系統技術業餘研究 » Erlang port巧用環境變數

Erlang與外面世界的互動主要通過port來進行的,特別是和外部程式的協作,通常是通過管道進行的。 基本上有2種方法可以呼叫外部程式: 1. os:cmd 2. erlang:open_port, 這二種方式各有利弊,先看文件: os:cmd的文件參見這裡 cmd(Command) ->

系統技術業餘研究 » 再談systemtap在ubuntu 10.10下的安裝

安裝的時候有幾個地方需要注意: 在做步驟2的時候: $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.10 DISTRIB_CODENAME=maverick DISTRIB_DESCRIPTION="Ubuntu

系統技術業餘研究 » GLIBC 2.16 支援systemtap靜態檢查點

剛@淘寶雕樑 告訴我 GLIBC 2.16 支援systemtap靜態檢查點,訊息源在這裡, 摘抄相關部分如下: * New configure option –enable-systemtap builds SystemTap static probes into libc for setj

系統技術業餘研究

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » MySQL資料庫架構的演化觀察

MySQL資料庫架構的演化觀察 December 14th, 2017 Categories: 資料庫 Tags: mysql

系統技術業餘研究 » inet_dist_connect_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke