Diff of /TODO [fb9529] .. [e55a4a] Maximize Restore

  Switch to unified view

a/TODO b/TODO
1
This is an (incomplete) list of some of the stuff we want to look at doing.
1
This is a list (not exhaustive) of some of the stuff to cleanup/fix.
2
2
3
If you're interested in hacking on any of these, please contact the list first
3
If you're interested in hacking on any of these, please contact the list first
4
for some pointers and/or read HACKING and doc/CodingStyle.
4
for some pointers and/or read HACKING and doc/CodingStyle.
5
5
6
1.0 release
6
1.0 release
7
-----------
7
-----------
8
8
9
(this is a minimal selection of stuff I think we need)
9
(this is a minimal selection of stuff I think we need)
10
10
11
 o default to a vmlinux location: need agreement from kernel developers
11
 o default to use kallsyms if no --vmlinux option is passed to operf
12
 o default to --separate=library (with anon, =none, makes not much sense)
12
 o the various open bugs
13
 o prettify image name for .jo files and allow lib-image: to specify it
14
 o gisle's fixes
15
 o opreport tgid:<tgid> doesn't work even if .jo files with that pid
16
 o Fix:
17
18
warning: [vdso] (tgid:9236 range:0x7fff98ffd000-0x7fff98fff000) could not be found.
19
warning: /no-vmlinux could not be found.
20
warning: /usr/lib64/libpanel-applet-2.so.0.2.27.#prelink#.sXCUK1 (deleted) could not be found.
21
22
 o amd64 32 bit build needs a sys32_lookup_dcookie() translator in the
23
   kernel
24
 o decide on -m tgid semantics for anon regions
25
 o if ev67 is not fixed, back it out
26
 o lapic : module should says "didn't find apic" if needed, FAQ and doc should
27
  speak a bit about lapic kernel option on x86 and recent kernel
28
 o see the big comment in db_insert.c, it's possible to allow unlimited
29
   amount of samples with a very minor change in libdb.
30
 o if oprofile doesn't recognize the processor selected by the kernel
31
   opcontrol could setup the module in timer mode (remove/reload prolly), and
32
   warn the user it must upgrade oprofile to get all the feature from its
33
   hardware.
34
13
35
Later
14
Later
36
-----
15
-----
37
16
(Thoughts from John Levon. Some of these may no longer be valid.
38
 o remove 2.95/2.2 support so we can use boost multi index container in
17
And for opcontrol-related issues, we don't care, since oprofile 1.0
39
   symbol/sample container
18
will no longer support opcontrol.)
40
 o consider if we can improve anon mapping growing support
41
42
<movement> [moz@lambent pp]$ ./opreport -lf lib-image:/lib/tls/libc-2.3.2.so /bin/bash | grep vfprintf
43
<movement> 14        0.1301  6         0.0102  /lib/tls/libc-2.3.2.so   vfprintf
44
<movement> [moz@lambent pp]$ ./opreport -lf lib-image:/lib/tls/libc-2.3.2.so /usr/bin/vim | grep vfprintf
45
<movement> 176       2.0927  349       1.2552  /lib/tls/libc-2.3.2.so   vfprintf
46
<movement> [moz@lambent pp]$ ./opreport -lf lib-image:/lib/tls/libc-2.3.2.so { image:/bin/bash } { image:/usr/bin/vim } | grep vfprintf
47
<movement> 176      10.9657  +++       349       7.8888  +++       vfprintf
48
<movement> 14       ---      ---       6        ---      ---       vfprintf
49
<movement> it seems them as two separate symbols
50
<movement> but can we remove the app_name from rough_less and still be able to walk the two lists?
51
<movement> even if we could, it would still go wrong when we're profiling multiple apps
52
53
 o Java stuff??
54
 o with opreport -c I can get "warning: /no-vmlinux could not be found.".
55
   Should be smarter ?
56
 o opreport -c gives weird output for an image with no symbols:
57
58
    samples  %        symbol name
59
  15965    100.000  (no symbols)
60
253      100.000  (no symbols)
61
  15965    98.4400  (no symbols)
62
  253       1.5600  (no symbols) [self]
63
19
64
 o consider tagging opreport -c entries with a number like gprof
20
 o consider tagging opreport -c entries with a number like gprof
65
 o --details for opreport -c, or diff??
21
 o --details for opreport -c, or diff??
66
 o should [self] entries be ommitted if 0 ??
22
 o should [self] entries be ommitted if 0 ??
67
 o stress test opreport -c: compile a Big Application w/o frame pointer and look
68
   how driver and opreport -c react.
69
 o oparchive could fix up {kern} paths with -p (what about diff between
23
 o oparchive could fix up {kern} paths with -p (what about diff between
70
   archive and current though?)
24
   archive and current though?)
71
 o can say more in opcontrol --status
72
 o consider a sort option for diff %
25
 o consider a sort option for diff %
73
 o opannotate is silent about symbols missing debug info
26
 o opannotate is silent about symbols missing debug info
74
 o oprofiled.log now contains various statistics about lost sample etc. from
75
  the driver. Post profile tools must parse that and warn eventually, warning
76
  must include a proposed work around. User need this: if nothing seems wrong
77
  people are unlikely to get a look in oprofiled.log (I ran oprofile on 2.6.1
78
  2 weeks before noticing at 30000 I lost a lot of samples, the profile seemed
79
  ok du to the randomization of lost samples). As developper we need that too,
80
  actually we have no clear idea of the behavior on different arch, NUMA etc.
81
  Not perfect because if the profiler is running the oprofiled.log will show
82
  those warning only after the first  alarm signal, I think we must dump the
83
  statistics information after each opcontrol --dump to avoid that.
84
 o odb_insert() can fail on ftruncate or mremap() in db_manage.c but we don't
27
 o odb_insert() can fail on ftruncate or mremap() in db_manage.c but we don't
85
  try to recover gracefully.
28
  try to recover gracefully.
86
 o output column shortname headers for opreport -l
29
 o output column shortname headers for opreport -l
87
 o is relative_to_absolute_path guaranteeing a trailing '/' documented ?
30
 o is relative_to_absolute_path guaranteeing a trailing '/' documented ?
88
 o move oprofiled.log to OP_SAMPLE_DIR/current ?
31
 o move oprofiled.log to OP_SAMPLE_DIR/current ?
89
 o pp tools must handle samples count overflow (marked as (unsigned)-1)
32
 o pp tools must handle samples count overflow (marked as (unsigned)-1)
90
 o the way we show kernel modules in 2.5 is not very obvious - "/oprofile"
91
 o oparchive will be more usefull with a --root= options to allow profiling
92
  on a small box, nfs mount / to another box and transfer sample file and
93
  binary on a bigger box for analysis. There is also a problem in oparchive
94
  you can use session: to get the right path to samples files but oprofiled.log
95
  and abi files path are hardcoded to /var/lib/oprofile.
96
 o callgraph patch: better way to skip ignored backtrace ?
33
 o callgraph patch: better way to skip ignored backtrace ?
97
 o lib-image: and image: behavior depend on --separate=, if --separate=library
34
 o lib-image: and image: behavior depend on --separate=, if --separate=library
98
  opreport "lib-image:*libc*" --merge=lib works but not
35
  opreport "lib-image:*libc*" --merge=lib works but not
99
  opreport "image:*libc*" --merge=lib whilst the behavior is reversed if
36
  opreport "image:*libc*" --merge=lib whilst the behavior is reversed if
100
  --separate==none. Must we take care ?
37
  --separate==none. Must we take care ?
...
...
108
  cg on it) and  used to emulate the call count field in gprof. I think this is
45
  cg on it) and  used to emulate the call count field in gprof. I think this is
109
  a after 1.0 thing but event aliases must be specified in a way allowing such
46
  a after 1.0 thing but event aliases must be specified in a way allowing such
110
  extension
47
  extension
111
 o do we need an opreport like opreport -c (showing caller/callee at binary
48
 o do we need an opreport like opreport -c (showing caller/callee at binary
112
  boundary not symbols) ?
49
  boundary not symbols) ?
113
 o we should notice an opcontrol config change (--separate etc.) and
114
   auto-restart the daemon if necessary (Run)
115
 o we can add lots more unit tests yet
50
 o we can add lots more unit tests yet
116
 o Itanium event constraints are not implemented
51
 o Itanium event constraints are not implemented
117
 o GUI still has a physical-counter interface, should have a general one
52
 o GUI still has a physical-counter interface, should have a general one
118
   like opcontrol --event
53
   like opcontrol --event
119
 o I think we should have the ability to have *fixed* width headers, e.g. :
54
 o I think we should have the ability to have *fixed* width headers, e.g. :
...
...
128
    o hard code ${typename} regular definition to remove all current limitations (difficult, perhaps after 1.0 ?).
63
    o hard code ${typename} regular definition to remove all current limitations (difficult, perhaps after 1.0 ?).
129
 o oprof_start dialog size is too small initially
64
 o oprof_start dialog size is too small initially
130
 o i18n. We need a good formatter, and also remember format_percent()
65
 o i18n. We need a good formatter, and also remember format_percent()
131
 o opannotate --source --output-dir=~moz/op/ /usr/bin/oprofiled
66
 o opannotate --source --output-dir=~moz/op/ /usr/bin/oprofiled
132
   will fail because the ~ is not expanded (no space around it) (popt bug I say)
67
   will fail because the ~ is not expanded (no space around it) (popt bug I say)
133
 o cpu names instead of numbers in 2.4 module/ ?
134
 o remove 1 and 2 magic numbers for oprof_ready
135
 o adapt Anton's patch for handling non-symbolled libraries ? (nowaday C++
136
  anon namespace symbol are static, 3.4 iirc, so with recent distro we are
137
  more likely to get problems with a "fallback to dynamic symbols" approch)
138
 o use standard C integer type <stdint.h> int32_t int16_t etc.
139
 o event multiplexing for real
140
 o randomizing of reset value
141
 o XML output
142
 o profile the NMI handler code
143
 o opannotate : I added this to the doc about difference between nr samples
68
 o opannotate : I added this to the doc about difference between nr samples
144
  credited to a source function and total number of samples for this function:
69
  credited to a source function and total number of samples for this function:
145
   "The missing samples are not lost, they will be credited to another source
70
   "The missing samples are not lost, they will be credited to another source
146
    location where the inlined function is defined. The inlined function will
71
    location where the inlined function is defined. The inlined function will
147
    be credited from multiple call site and merged in one place in the
72
    be credited from multiple call site and merged in one place in the
...
...
252
177
253
General checks to make
178
General checks to make
254
----------------------
179
----------------------
255
 
180
 
256
 o rgrep FIXME
181
 o rgrep FIXME
182
 o run Coverity
257
 o valgrind (--show-reachable=yes --leak-check=yes)
183
 o valgrind (--show-reachable=yes --leak-check=yes)
258
 o audit to track unnecessary include <>
184
 o audit to track unnecessary include <>
259
 o gcc 3.0/3.x compile
185
 o gcc 3.0/3.x compile
260
 o Qt2/3 check, no Qt check
186
 o Qt2/3 check, no Qt check
261
 o verify builds (modversions, kernel versions, athlon etc.). I have the
187
 o verify builds (modversions, kernel versions, athlon etc.). I have the