All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Budankov <alexey.budankov@linux.intel.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Andi Kleen <ak@linux.intel.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	kernel-team@lge.com
Subject: Re: [PATCH v9 2/3]: perf record: enable asynchronous trace writing
Date: Fri, 5 Oct 2018 12:39:10 +0300	[thread overview]
Message-ID: <4ee1c347-674b-ac61-65cf-55fb71a7cc2b@linux.intel.com> (raw)
In-Reply-To: <20181005084854.GE3768@sejong>

Hi,

On 05.10.2018 11:48, Namhyung Kim wrote:
> On Fri, Oct 05, 2018 at 11:31:11AM +0300, Alexey Budankov wrote:
<SNIP>
>>
>> Well, this could be implemented like this avoiding lseek() in else branch:
>>
>> 	off = lseek(trace_fd, 0, SEEK_CUR);
>> 	ret = record__aio_write(cblock, trace_fd, bf, size, off);
>> 	if (!ret) {
>> 		lseek(trace_fd, off + size, SEEK_SET);
>> 		rec->bytes_written += size;
>>
>> 		if (switch_output_size(rec))
>> 			trigger_hit(&switch_output_trigger);
>> 	}
> 
> Oh I meant the both like:
> 
> 	off = rec->bytes_written;
>  	ret = record__aio_write(cblock, trace_fd, bf, size, off);
>  	if (!ret) {
>  		rec->bytes_written += size;
> 
> 		...
> 

It still have to adjust the file pos thru lseek() prior leaving 
record__aio_pushfn() so space in trace file would be pre-allocated for 
enqueued record and file pos be moved beyond the record data, 
possibly for the next record.

> 
<SNIP>
> 
> Why not exposing opts.nr_cblocks regardless of the #ifdef?  It'll have
> 0 when it's not compiled in.  Then it could be like below (assuming
> you have all the dummy aio funcitons):
> 
> 
>>
>> 		if (map->base) {
>> 			if (!rec->opts.nr_cblocks) {
>> 				if (perf_mmap__push(map, rec, record__pushfn) != 0) {
>> 					rc = -1;
>> 					goto out;
>> 				}
>> 			} else {
>> 				int idx;
>> 				/*
>> 				 * Call record__aio_sync() to wait till map->data buffer
>> 				 * becomes available after previous aio write request.
>> 				 */
>> 				idx = record__aio_sync(map, false);
>> 				if (perf_mmap__aio_push(map, rec, idx, record__aio_pushfn) != 0) {
>> 					rc = -1;
>> 					goto out;
>> 				}
>> 			}
>> 		}
>>

Well, if it has AIO symbols + opts.nr_cblocks exposed unconditionally of 
HAVE_AIO_SUPPORT, but keeps the symbols implementation under the define, then
as far aio-cblocks option is not exposed thru command line, we end up in
whole bunch of symbols referenced under the else branch that, after all, 
can cause Perf binary size increase, which is, probably, worth avoiding.

Thanks,
Alexey

  reply	other threads:[~2018-10-05  9:39 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-03 15:54 [PATCH v9 0/3]: perf: reduce data loss when profiling highly parallel CPU bound workloads Alexey Budankov
2018-10-03 16:01 ` [PATCH v9 1/3]: perf util: map data buffer for preserving collected data Alexey Budankov
2018-10-05  6:23   ` Namhyung Kim
2018-10-05  7:03     ` Alexey Budankov
2018-10-05  7:29     ` Alexey Budankov
2018-10-03 16:12 ` [PATCH v9 2/3]: perf record: enable asynchronous trace writing Alexey Budankov
2018-10-05  7:16   ` Namhyung Kim
2018-10-05  8:31     ` Alexey Budankov
2018-10-05  8:48       ` Namhyung Kim
2018-10-05  9:39         ` Alexey Budankov [this message]
2018-10-05 10:55           ` Namhyung Kim
2018-10-05 11:50             ` Alexey Budankov
2018-10-05 15:53               ` Alexey Budankov
2018-10-03 16:17 ` [PATCH v9 3/3]: perf record: extend trace writing to multi AIO Alexey Budankov
2018-10-05  7:22   ` Namhyung Kim
2018-10-05  7:54     ` Alexey Budankov
  -- strict thread matches above, loose matches on Subject: below --
2018-10-05 13:35 [PATCH v10 0/3]: perf: reduce data loss when profiling highly parallel CPU bound workloads Alexey Budankov
2018-10-05 13:49 ` [PATCH v9 2/3]: perf record: enable asynchronous trace writing Alexey Budankov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ee1c347-674b-ac61-65cf-55fb71a7cc2b@linux.intel.com \
    --to=alexey.budankov@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@redhat.com \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.