Commit ed396d2d authored by 4ast's avatar 4ast

Merge pull request #379 from goldshtn/cosmetic

Cosmetic changes: removed .py suffix, fixed link in README
parents 61f5535f 6ae261eb
...@@ -86,7 +86,7 @@ Tools: ...@@ -86,7 +86,7 @@ Tools:
- tools/[hardirqs](tools/hardirqs.py): Measure hard IRQ (hard interrupt) event time. [Examples](tools/hardirqs_example.txt). - tools/[hardirqs](tools/hardirqs.py): Measure hard IRQ (hard interrupt) event time. [Examples](tools/hardirqs_example.txt).
- tools/[killsnoop](tools/killsnoop.py): Trace signals issued by the kill() syscall. [Examples](tools/killsnoop_example.txt). - tools/[killsnoop](tools/killsnoop.py): Trace signals issued by the kill() syscall. [Examples](tools/killsnoop_example.txt).
- tools/[mdflush](tools/mdflush.py): Trace md flush events. [Examples](tools/mdflush.txt). - tools/[mdflush](tools/mdflush.py): Trace md flush events. [Examples](tools/mdflush.txt).
- tools/[memleak](tools/memleak.py): Display outstanding memory allocations to find memory leaks. [Examples](tools/memleak_examples.txt). - tools/[memleak](tools/memleak.py): Display outstanding memory allocations to find memory leaks. [Examples](tools/memleak_example.txt).
- tools/[offcputime](tools/offcputime.py): Summarize off-CPU time by kernel stack trace. [Examples](tools/offcputime_example.txt). - tools/[offcputime](tools/offcputime.py): Summarize off-CPU time by kernel stack trace. [Examples](tools/offcputime_example.txt).
- tools/[offwaketime](tools/offwaketime.py): Summarize blocked time by kernel off-CPU stack and waker stack. [Examples](tools/offwaketime_example.txt). - tools/[offwaketime](tools/offwaketime.py): Summarize blocked time by kernel off-CPU stack and waker stack. [Examples](tools/offwaketime_example.txt).
- tools/[oomkill](tools/oomkill.py): Trace the out-of-memory (OOM) killer. [Examples](tools/oomkill_example.txt). - tools/[oomkill](tools/oomkill.py): Trace the out-of-memory (OOM) killer. [Examples](tools/oomkill_example.txt).
......
#!/usr/bin/env python #!/usr/bin/env python
# #
# memleak.py Trace and display outstanding allocations to detect # memleak Trace and display outstanding allocations to detect
# memory leaks in user-mode processes and the kernel. # memory leaks in user-mode processes and the kernel.
# #
# USAGE: memleak.py [-h] [-p PID] [-t] [-a] [-o OLDER] [-c COMMAND] # USAGE: memleak [-h] [-p PID] [-t] [-a] [-o OLDER] [-c COMMAND]
# [-s SAMPLE_RATE] [-d STACK_DEPTH] [-T TOP] [-z MIN_SIZE] # [-s SAMPLE_RATE] [-d STACK_DEPTH] [-T TOP] [-z MIN_SIZE]
# [-Z MAX_SIZE] # [-Z MAX_SIZE]
# [interval] [count] # [interval] [count]
...@@ -157,23 +157,23 @@ def run_command_get_pid(command): ...@@ -157,23 +157,23 @@ def run_command_get_pid(command):
examples = """ examples = """
EXAMPLES: EXAMPLES:
./memleak.py -p $(pidof allocs) ./memleak -p $(pidof allocs)
Trace allocations and display a summary of "leaked" (outstanding) Trace allocations and display a summary of "leaked" (outstanding)
allocations every 5 seconds allocations every 5 seconds
./memleak.py -p $(pidof allocs) -t ./memleak -p $(pidof allocs) -t
Trace allocations and display each individual call to malloc/free Trace allocations and display each individual call to malloc/free
./memleak.py -ap $(pidof allocs) 10 ./memleak -ap $(pidof allocs) 10
Trace allocations and display allocated addresses, sizes, and stacks Trace allocations and display allocated addresses, sizes, and stacks
every 10 seconds for outstanding allocations every 10 seconds for outstanding allocations
./memleak.py -c "./allocs" ./memleak -c "./allocs"
Run the specified command and trace its allocations Run the specified command and trace its allocations
./memleak.py ./memleak
Trace allocations in kernel mode and display a summary of outstanding Trace allocations in kernel mode and display a summary of outstanding
allocations every 5 seconds allocations every 5 seconds
./memleak.py -o 60000 ./memleak -o 60000
Trace allocations in kernel mode and display a summary of outstanding Trace allocations in kernel mode and display a summary of outstanding
allocations that are at least one minute (60 seconds) old allocations that are at least one minute (60 seconds) old
./memleak.py -s 5 ./memleak -s 5
Trace roughly every 5th allocation, to reduce overhead Trace roughly every 5th allocation, to reduce overhead
""" """
......
...@@ -6,7 +6,7 @@ collects call stacks for each allocation. memleak can then print a summary ...@@ -6,7 +6,7 @@ collects call stacks for each allocation. memleak can then print a summary
of which call stacks performed allocations that weren't subsequently freed. of which call stacks performed allocations that weren't subsequently freed.
For example: For example:
# ./memleak.py -p $(pidof allocs) # ./memleak -p $(pidof allocs)
Attaching to malloc and free in pid 5193, Ctrl+C to quit. Attaching to malloc and free in pid 5193, Ctrl+C to quit.
[11:16:33] Top 2 stacks with outstanding allocations: [11:16:33] Top 2 stacks with outstanding allocations:
80 bytes in 5 allocations from stack 80 bytes in 5 allocations from stack
...@@ -32,7 +32,7 @@ Occasionally, you do want the individual allocation details. Perhaps the same ...@@ -32,7 +32,7 @@ Occasionally, you do want the individual allocation details. Perhaps the same
stack is allocating various sizes and you want to confirm which sizes are stack is allocating various sizes and you want to confirm which sizes are
prevalent. Use the -a switch: prevalent. Use the -a switch:
# ./memleak.py -p $(pidof allocs) -a # ./memleak -p $(pidof allocs) -a
Attaching to malloc and free in pid 5193, Ctrl+C to quit. Attaching to malloc and free in pid 5193, Ctrl+C to quit.
[11:16:33] Top 2 stacks with outstanding allocations: [11:16:33] Top 2 stacks with outstanding allocations:
addr = 948cd0 size = 16 addr = 948cd0 size = 16
...@@ -63,7 +63,7 @@ When using the -p switch, memleak traces the allocations of a particular ...@@ -63,7 +63,7 @@ When using the -p switch, memleak traces the allocations of a particular
process. Without this switch, kernel allocations (kmalloc) are traced instead. process. Without this switch, kernel allocations (kmalloc) are traced instead.
For example: For example:
# ./memleak.py # ./memleak
Attaching to kmalloc and kfree, Ctrl+C to quit. Attaching to kmalloc and kfree, Ctrl+C to quit.
... ...
248 bytes in 4 allocations from stack 248 bytes in 4 allocations from stack
...@@ -114,7 +114,7 @@ interval, pass the interval as a positional parameter to memleak. You can ...@@ -114,7 +114,7 @@ interval, pass the interval as a positional parameter to memleak. You can
also control the number of times the output will be printed before exiting. also control the number of times the output will be printed before exiting.
For example: For example:
# ./memleak.py 1 10 # ./memleak 1 10
... will print the outstanding allocation statistics every second, for ten ... will print the outstanding allocation statistics every second, for ten
times, and then exit. times, and then exit.
...@@ -125,7 +125,7 @@ control the overhead by sampling every N-th allocation. For example, to sample ...@@ -125,7 +125,7 @@ control the overhead by sampling every N-th allocation. For example, to sample
roughly 10% of the allocations and print the outstanding allocations every 5 roughly 10% of the allocations and print the outstanding allocations every 5
seconds, 3 times before quitting: seconds, 3 times before quitting:
# ./memleak.py -p $(pidof allocs) -s 10 5 3 # ./memleak -p $(pidof allocs) -s 10 5 3
Attaching to malloc and free in pid 2614, Ctrl+C to quit. Attaching to malloc and free in pid 2614, Ctrl+C to quit.
[11:16:33] Top 2 stacks with outstanding allocations: [11:16:33] Top 2 stacks with outstanding allocations:
16 bytes in 1 allocations from stack 16 bytes in 1 allocations from stack
...@@ -149,8 +149,8 @@ of the sampling rate applied. ...@@ -149,8 +149,8 @@ of the sampling rate applied.
USAGE message: USAGE message:
# ./memleak.py -h # ./memleak -h
usage: memleak.py [-h] [-p PID] [-t] [-a] [-o OLDER] [-c COMMAND] usage: memleak [-h] [-p PID] [-t] [-a] [-o OLDER] [-c COMMAND]
[-s SAMPLE_RATE] [-d STACK_DEPTH] [-T TOP] [-s SAMPLE_RATE] [-d STACK_DEPTH] [-T TOP]
[interval] [count] [interval] [count]
...@@ -185,21 +185,21 @@ optional arguments: ...@@ -185,21 +185,21 @@ optional arguments:
EXAMPLES: EXAMPLES:
./memleak.py -p $(pidof allocs) ./memleak -p $(pidof allocs)
Trace allocations and display a summary of "leaked" (outstanding) Trace allocations and display a summary of "leaked" (outstanding)
allocations every 5 seconds allocations every 5 seconds
./memleak.py -p $(pidof allocs) -t ./memleak -p $(pidof allocs) -t
Trace allocations and display each individual call to malloc/free Trace allocations and display each individual call to malloc/free
./memleak.py -ap $(pidof allocs) 10 ./memleak -ap $(pidof allocs) 10
Trace allocations and display allocated addresses, sizes, and stacks Trace allocations and display allocated addresses, sizes, and stacks
every 10 seconds for outstanding allocations every 10 seconds for outstanding allocations
./memleak.py -c "./allocs" ./memleak -c "./allocs"
Run the specified command and trace its allocations Run the specified command and trace its allocations
./memleak.py ./memleak
Trace allocations in kernel mode and display a summary of outstanding Trace allocations in kernel mode and display a summary of outstanding
allocations every 5 seconds allocations every 5 seconds
./memleak.py -o 60000 ./memleak -o 60000
Trace allocations in kernel mode and display a summary of outstanding Trace allocations in kernel mode and display a summary of outstanding
allocations that are at least one minute (60 seconds) old allocations that are at least one minute (60 seconds) old
./memleak.py -s 5 ./memleak -s 5
Trace roughly every 5th allocation, to reduce overhead Trace roughly every 5th allocation, to reduce overhead
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment