strace_log 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +90 -0
  3. data/lib/strace_log.rb +6 -6
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5277fc2fae5e79d021699c073571c59b27e722b7
4
- data.tar.gz: cbd13c2196e9d5b0b848d360e10b0fb221ffd62b
3
+ metadata.gz: 60912730fd9e97f6be5618218c74dbe050c5e01f
4
+ data.tar.gz: b3e0abf9c2c8b62ef9b223fce27cd02f3fe32e6f
5
5
  SHA512:
6
- metadata.gz: 391e5d822f5d129bc2d6af7bd4b7f84febcbee1ac3584e0252d893764617c4fb7a1f1e83eebe85e98c62470f33758a286547ff20c7672aa96777be87429439c9
7
- data.tar.gz: fb547f067c6ce42b957f77cc980db33daa8f7808bd5d4d5d0da586a8a4da91f0edac0af635f3f8fa5ed2c93d98aec300b8949dc818d5d9c736ba3dbacd85c7a1
6
+ metadata.gz: 950e8007b438cf96b95ab82c545e73df6ea695b1091fa044c988dbc096f98fe26d187f9916fc4df6bdc41571441813c517a173ea126bee20afe535949851ee31
7
+ data.tar.gz: 535ef872af158736e7431b964b7a9a932b7bb0e6e7237a56df080211c1d5a53424abd0012e35c0a9c1fda5b67722ff4754d88042b12a040bd7b0cacff66a6b2d
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  Parse logs generated by Strace (system call tracer) and obtain statistics.
4
4
 
5
+ * [GitHub](https://github.com/masa16/strace_log)
6
+ * [RubyGems](https://rubygems.org/gems/strace_log)
7
+
5
8
  ## Installation
6
9
 
7
10
  Add this line to your application's Gemfile:
@@ -34,6 +37,93 @@ Print statistics of strace log:
34
37
  * StraceLog::IOCounter
35
38
  * StraceLog::Stat
36
39
 
40
+ ## Example
41
+
42
+ $ strace -ttt -T -o strace.log dd if=/dev/zero of=tmpfile count=10000
43
+
44
+ $ strace-stat strace.log
45
+ count={
46
+ execve: 1,
47
+ brk: 3,
48
+ mmap: 16,
49
+ access: 1,
50
+ open: 42,
51
+ stat: 19,
52
+ read: 10005,
53
+ fstat: 6,
54
+ mprotect: 7,
55
+ close: 11,
56
+ arch_prctl: 1,
57
+ set_tid_address: 1,
58
+ set_robust_list: 1,
59
+ futex: 2,
60
+ rt_sigaction: 6,
61
+ rt_sigprocmask: 1,
62
+ getrlimit: 1,
63
+ dup2: 2,
64
+ lseek: 1,
65
+ clock_gettime: 2,
66
+ write: 10003,
67
+ munmap: 1,
68
+ exit_group: 1,
69
+ }
70
+
71
+ time={
72
+ execve: 0.000479,
73
+ brk: 0.000376,
74
+ mmap: 0.001751,
75
+ access: 0.000157,
76
+ open: 0.004224,
77
+ stat: 0.001602,
78
+ read: 1.176440,
79
+ fstat: 0.000697,
80
+ mprotect: 0.000647,
81
+ close: 0.006732,
82
+ arch_prctl: 0.000101,
83
+ set_tid_address: 0.000127,
84
+ set_robust_list: 0.000111,
85
+ futex: 0.000232,
86
+ rt_sigaction: 0.000718,
87
+ rt_sigprocmask: 0.000116,
88
+ getrlimit: 0.000091,
89
+ dup2: 0.000213,
90
+ lseek: 0.000112,
91
+ clock_gettime: 0.000343,
92
+ write: 1.229899,
93
+ munmap: 0.000110,
94
+ }
95
+
96
+ /bin/dd:
97
+ ok={execve:1}
98
+ time={execve:0.000479}
99
+
100
+ /dev/zero:
101
+ ok={close:2, dup2:1, lseek:1, open:1, read:10000}
102
+ size={read:5120000}
103
+ time={close:0.000224, dup2:0.000112, lseek:0.000112, open:0.000119, read:1.176062}
104
+
105
+ /etc/ld.so.preload:
106
+ fail={access:1}
107
+ time={access:0.000157}
108
+
109
+ ...
110
+
111
+ /usr/share/locale/locale.alias:
112
+ ok={close:1, fstat:1, open:1, read:2}
113
+ size={read:2512}
114
+ time={close:0.000202, fstat:0.000216, open:0.000124, read:0.000221}
115
+
116
+ stderr:
117
+ ok={close:1, write:3}
118
+ size={write:90}
119
+ time={close:0.000022, write:0.000243}
120
+
121
+ tmpfile:
122
+ ok={close:2, dup2:1, open:1, write:10000}
123
+ size={write:5120000}
124
+ time={close:0.005866, dup2:0.000101, open:0.000154, write:1.229656}
125
+
126
+
37
127
  ## Contributing
38
128
 
39
129
  1. Fork it ( https://github.com/masa16/strace_log/fork )
data/lib/strace_log.rb CHANGED
@@ -2,13 +2,13 @@ require 'strscan'
2
2
 
3
3
  module StraceLog
4
4
 
5
- VERSION = "0.1.2"
5
+ VERSION = "0.1.3"
6
6
 
7
7
  class ParsedCall
8
8
  ESCAPES = [ /x[\da-f][\da-f]/i, /n/, /t/, /r/, /\\/, /"/, /\d+/]
9
9
 
10
10
  def initialize(line)
11
- if /^(?:(\d\d:\d\d:\d\d|\d+)(?:\.(\d+))? )?---.*---$/ =~ line
11
+ if /^(?:(\d\d:\d\d:\d\d|\d+)(?:\.(\d+))? )?[+-]{3}.*[+-]{3}$/ =~ line
12
12
  @mesg = line
13
13
  else
14
14
  s = StringScanner.new(line)
@@ -137,7 +137,7 @@ module StraceLog
137
137
  end
138
138
  if !@time.empty?
139
139
  keys = @time.keys.sort
140
- Kernel.print " time={"+keys.map{|k| "%s:%.6g"%[k,@time[k]]}.join(", ")+"}\n"
140
+ Kernel.print " time={"+keys.map{|k| "%s:%.6f"%[k,@time[k]]}.join(", ")+"}\n"
141
141
  end
142
142
  if !@rename.empty?
143
143
  Kernel.print " rename={#{@rename.join(', ')}}\n"
@@ -200,8 +200,8 @@ module StraceLog
200
200
  fd = pc.args[0].to_i
201
201
  count_fd(fd,pc)
202
202
  if pc.ret != "-1"
203
- fd = pc.ret.to_i
204
- @fd2path[fd] = path
203
+ fd2 = pc.ret.to_i
204
+ @fd2path[fd2] = @fd2path[fd]
205
205
  end
206
206
 
207
207
  when /^mmap$/
@@ -253,7 +253,7 @@ module StraceLog
253
253
  Kernel.print "}\n\n"
254
254
  Kernel.print "time={\n"
255
255
  @spent.each do |m,t|
256
- Kernel.printf " %s: %.6g,\n",m,t
256
+ Kernel.printf " %s: %.6f,\n",m,t
257
257
  end
258
258
  Kernel.print "}\n\n"
259
259
  files = @stat.keys.select{|x| x.class==String}.sort
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strace_log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro TANAKA