Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1604564
| From | Petr Mladek <pmladek@suse.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks |
| Date | 2017-03-20 14:30 +0100 |
| Message-ID | <tn5xM-5ik-29@gated-at.bofh.it> (permalink) |
| References | (1 earlier) <tlsI9-7Ou-9@gated-at.bofh.it> <tlBV7-62w-1@gated-at.bofh.it> <tlItA-2iT-21@gated-at.bofh.it> <tlPv3-7nQ-5@gated-at.bofh.it> <tmsmJ-2D3-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Sat 2017-03-18 12:31:35, Joe Perches wrote:
> (adding Petr and Steven to cc's)
>
> On Fri, 2017-03-17 at 10:56 +0900, Sergey Senozhatsky wrote:
> > On (03/16/17 11:37), Joe Perches wrote:
> > > On Thu, 2017-03-16 at 20:30 +0900, Sergey Senozhatsky wrote:
> > > > On (03/15/17 18:43), Joe Perches wrote:
> > > > [..]
> > > > > - printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n"
> > > > > - " active_file:%lu inactive_file:%lu isolated_file:%lu\n"
> > > > > - " unevictable:%lu dirty:%lu writeback:%lu unstable:%lu\n"
> > > > > - " slab_reclaimable:%lu slab_unreclaimable:%lu\n"
> > > > > - " mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n"
> > > > > - " free:%lu free_pcp:%lu free_cma:%lu\n",
> > > > > - global_node_page_state(NR_ACTIVE_ANON),
> > > > > - global_node_page_state(NR_INACTIVE_ANON),
> > > > > - global_node_page_state(NR_ISOLATED_ANON),
> > > > > - global_node_page_state(NR_ACTIVE_FILE),
> > > > > - global_node_page_state(NR_INACTIVE_FILE),
> > > > > - global_node_page_state(NR_ISOLATED_FILE),
> > > > > - global_node_page_state(NR_UNEVICTABLE),
> > > > > - global_node_page_state(NR_FILE_DIRTY),
> > > > > - global_node_page_state(NR_WRITEBACK),
> > > > > - global_node_page_state(NR_UNSTABLE_NFS),
> > > > > - global_page_state(NR_SLAB_RECLAIMABLE),
> > > > > - global_page_state(NR_SLAB_UNRECLAIMABLE),
> > > > > - global_node_page_state(NR_FILE_MAPPED),
> > > > > - global_node_page_state(NR_SHMEM),
> > > > > - global_page_state(NR_PAGETABLE),
> > > > > - global_page_state(NR_BOUNCE),
> > > > > - global_page_state(NR_FREE_PAGES),
> > > > > - free_pcp,
> > > > > - global_page_state(NR_FREE_CMA_PAGES));
> []
> > > > > a side note:
> > > >
> > > > this can make it harder to read, in _the worst case_. one printk()
> > > > guaranteed that we would see a single line in the serial log/etc.
> > > > the sort of a problem with multiple printks is that printks coming
> > > > from other CPUs will split that "previously single" line.
> > >
> > > Not true. Note the multiple \n uses in the original code.
> >
> > one printk call ends up in logbuf as a single entry and, thus, we print
> > it to the serial console in one shot (what is the correct english word
> > to use here?). multiple printks result in multiple logbuf entries, and
> > printks from other CPUs can mix in.
> >
> > so the difference is:
> >
> >
> > CPU0 CPU1
> > printk(foo\n)
> > printk(..isolated_anon\n...isolated_file\n...)
> > printk(bar\n)
> >
> > vs
> >
> > CPU0 CPU1
> > printk(..isolated_anon\n)
> > printk(foo\n)
> > printk(...isolated_file\n)
> > printk(bar\n)
> > printk(...\n)
> >
> > not the same thing.
> >
> > and the slower the serial console is the more messages potentially
> > can appear between "..isolated_anon\n" and "...isolated_file\n".
>
> Right. For the definition of "single line", meaning "contiguous
> block" and not single line.
>
> Perhaps there would be some value in having a generic mechanism
> for the dump_stack use of "atomic_t dump_lock", where a thread
> can grab exclusive use of the printk subsystem for a short period
> to keep messages from being interleaved by other processes.
This sounds a bit scary to me. A globally blocking chain of
printk() calls might open another can of deadlocks. Also, IMHO,
dumping stack is a non-trivial operation, especially when
we need to read debuginfo.
Another solution would be to somehow reuse the per-CPU buffers
used by vprintk_safe(). An API for buffering printk messages
would be useful also for continuous lines. But this need to
be well designed.
Anyway, this should probably be discussed separately. We are too
far from the original problem. The fact is that printk() does
not prevent interleaving lines from different CPUs and probably
won't be in a near future. I am not sure in which situations
the affected messages are printed and if such an interleaving
is probable or not.
Best Regards,
Petr
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 0/3] mm: page_alloc: Object code reductions and logging fix Joe Perches <joe@perches.com> - 2017-03-16 02:50 +0100
[PATCH 2/3] mm: page_alloc: Fix misordered logging output, reduce code size Joe Perches <joe@perches.com> - 2017-03-16 02:50 +0100
Re: [PATCH 2/3] mm: page_alloc: Fix misordered logging output, reduce code size Michal Hocko <mhocko@kernel.org> - 2017-03-16 12:00 +0100
[PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Joe Perches <joe@perches.com> - 2017-03-16 02:50 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Michal Hocko <mhocko@kernel.org> - 2017-03-16 12:00 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Joe Perches <joe@perches.com> - 2017-03-16 21:40 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Michal Hocko <mhocko@kernel.org> - 2017-03-17 08:40 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> - 2017-03-16 12:40 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Joe Perches <joe@perches.com> - 2017-03-16 19:40 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Andrew Morton <akpm@linux-foundation.org> - 2017-03-17 00:00 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> - 2017-03-17 03:10 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Joe Perches <joe@perches.com> - 2017-03-18 20:40 +0100
Re: [PATCH 1/3] mm: page_alloc: Reduce object size by neatening printks Petr Mladek <pmladek@suse.com> - 2017-03-20 14:30 +0100
csiph-web