lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <35DD0769-1AB5-498E-9173-DB7DAF9BD580@fb.com>
Date:   Wed, 21 Nov 2018 17:56:04 +0000
From:   Song Liu <songliubraving@...com>
To:     Jiri Olsa <jolsa@...hat.com>
CC:     lkml <linux-kernel@...r.kernel.org>,
        "acme@...nel.org" <acme@...nel.org>, Jiri Olsa <jolsa@...nel.org>,
        Peter Zijlstra <peterz@...radead.org>,
        "wangnan0@...wei.com" <wangnan0@...wei.com>,
        Kernel Team <Kernel-team@...com>
Subject: Re: perf tools: remove option --tail-synthesize ?



> On Nov 21, 2018, at 2:47 AM, Jiri Olsa <jolsa@...hat.com> wrote:
> 
> On Wed, Nov 21, 2018 at 07:45:28AM +0000, Song Liu wrote:
>> Hi,
>> 
>> I found perf-record --tail-synthesize without --overwrite breaks symbols
>> for perf-script, perf-report, etc. For example:
>> 
>> [root@]# ~/perf record -ag --tail-synthesize -- sleep 1
>> [ perf record: Woken up 1 times to write data ]
>> [ perf record: Captured and wrote 1.129 MB perf.data (3531 samples) ]
>> [root@]# ~/perf script | head
>> swapper     0 [000] 1250675.051971:          1 cycles:ppp:
>>        ffffffff81009e15 [unknown] ([unknown])
>>        ffffffff81196b19 [unknown] ([unknown])
>>        ffffffff81196579 [unknown] ([unknown])
>>        ffffffff81110ca7 [unknown] ([unknown])
>>        ffffffff81a01f4a [unknown] ([unknown])
>>        ffffffff81a017bf [unknown] ([unknown])
>>        ffffffff8180e17a [unknown] ([unknown])
>> 
>> perf-record with --overwrite does NOT have this issue.
> 
> actualy I think that now it works properly, if you turn on
> task and mmap events, you'll see the samples get resolved
> right after aux events are processed:
> 
> 	[root@...va perf]# ./perf script --show-info --show-task-events --show-mmap-events
> 	...
> 	swapper     0 [007] 620566.187355:      64821 cycles:ppp:
> 		ffffffffab0b4d7c [unknown] ([unknown])
> 		ffffffffaba01b1f [unknown] ([unknown])
> 		ffffffffab75d567 [unknown] ([unknown])
> 		ffffffffab0e1f56 [unknown] ([unknown])
> 		ffffffffab0e216f [unknown] ([unknown])
> 		ffffffffab050dc7 [unknown] ([unknown])
> 		ffffffffab0000d5 [unknown] ([unknown])
> 
> 	swapper     0 [000]     0.000000: PERF_RECORD_MMAP -1/0: [0xffffffffab000000(0x152c8000) @ 0xffffffffab000000]: x [kernel.kallsyms]_text
> 	swapper     0 [000]     0.000000: PERF_RECORD_MMAP -1/0: [0xffffffffc02c8000(0x4000) @ 0]: x /lib/modules/4.18.17-200.fc28.x86_64/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko.xz
> 	swapper     0 [000]     0.000000: PERF_RECORD_MMAP -1/0: [0xffffffffc02cd000(0x4000) @ 0]: x /lib/modules/4.18.17-200.fc28.x86_64/kernel/drivers/thermal/intel_pch_thermal.ko.xz
> 	...
> 	ext4-rsv-conver     0 [000]     0.000000: PERF_RECORD_COMM: ext4-rsv-conver:989/989
> 	perf 20063 [005] 620566.187438:    1056712 cycles:ppp:
> 		ffffffffab1f605d filemap_map_pages+0x9d (/usr/lib/debug/lib/modules/4.18.17-200.fc28.x86_64/vmlinux)
> 		ffffffffab23aaa8 __handle_mm_fault+0x1018 (/usr/lib/debug/lib/modules/4.18.17-200.fc28.x86_64/vmlinux)
> 		ffffffffab23ae7a handle_mm_fault+0xda (/usr/lib/debug/lib/modules/4.18.17-200.fc28.x86_64/vmlinux)
> 		ffffffffab06ac90 __do_page_fault+0x240 (/usr/lib/debug/lib/modules/4.18.17-200.fc28.x86_64/vmlinux)
> 		ffffffffab06af62 do_page_fault+0x32 (/usr/lib/debug/lib/modules/4.18.17-200.fc28.x86_64/vmlinux)
> 		ffffffffaba010ee page_fault+0x1e (/usr/lib/debug/lib/modules/4.18.17-200.fc28.x86_64/vmlinux)
> 	...
> 
> if you record with --overwrite and --tail-synthesize the aux events
> will go to the top of the perf.data, so all's good
> 
>> 
>> After digging into this, I found this issue is introduced by commit
>> a73e24d240bc136619d382b1268f34d75c9d25ce.
> 
> right, we got rid of that, because it will store the 'current/live'
> server mmaps for report/script, which is not what you want

Agreed.

>> Reverting this commit does fix this issue. However, on a second thought,
>> I feel it is probably better just drop --tail-synthesize, as it doesn't
>> make much sense without --overwrite. All we need is to do tail_synthesize
>> when --overwrite is set.
>> 
>> Thoughts?
> 
> maybe we should make --tail-synthesize non optionable for --overwrite,
> and get rid of that option completely.. Wang, any idea?
> 
> but definitelly not allow that for non overwrite
> 

--overwrite forces tail-synthesize already:

        if (record.opts.overwrite)
                record.opts.tail_synthesize = true;

So I guess all we need is to remove --tail-synthesize. If we all agree 
with this direction, I can draft patch for it. 

Thanks,
Song


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ