All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kamezawa Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
To: Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Cc: Sha Zhengju <handai.szj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
	Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	gthelen-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
	fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org,
	dchinner-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	Sha Zhengju <handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH V3 4/8] memcg: add per cgroup dirty pages accounting
Date: Wed, 09 Jan 2013 16:24:34 +0900	[thread overview]
Message-ID: <50ED1B32.2030007@jp.fujitsu.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1301082030100.5319-fupSdm12i1nKWymIFiNcPA@public.gmane.org>

(2013/01/09 14:15), Hugh Dickins wrote:
> On Mon, 7 Jan 2013, Kamezawa Hiroyuki wrote:
>> (2013/01/07 5:02), Hugh Dickins wrote:
>>>
>>> Forgive me, I must confess I'm no more than skimming this thread,
>>> and don't like dumping unsigned-off patches on people; but thought
>>> that on balance it might be more helpful than not if I offer you a
>>> patch I worked on around 3.6-rc2 (but have updated to 3.8-rc2 below).
>>>
>>> I too was getting depressed by the constraints imposed by
>>> mem_cgroup_{begin,end}_update_page_stat (good job though Kamezawa-san
>>> did to minimize them), and wanted to replace by something freer, more
>>> RCU-like.  In the end it seemed more effort than it was worth to go
>>> as far as I wanted, but I do think that this is some improvement over
>>> what we currently have, and should deal with your recursion issue.
>>>
>> In what case does this improve performance ?
>
> Perhaps none.  I was aiming to not degrade performance at the stats
> update end, and make it more flexible, so new stats can be updated which
> would be problematic today (for lock ordering and recursion reasons).
>
> I've not done any performance measurement on it, and don't have enough
> cpus for an interesting report; but if someone thinks it might solve a
> problem for them, and has plenty of cpus to test with, please go ahead,
> we'd be glad to hear the results.
>
>> Hi, this patch seems interesting but...doesn't this make move_account() very
>> slow if the number of cpus increases because of scanning all cpus per a page
>> ?
>> And this looks like reader-can-block-writer percpu rwlock..it's too heavy to
>> writers if there are many readers.
>
> I was happy to make the relatively rare move_account end considerably
> heavier.  I'll be disappointed if it turns out to be prohibitively
> heavy at that end - if we're going to make move_account impossible,
> there are much easier ways to achieve that! - but it is a possibility.
>

move_account at task-move has been required feature for NEC and Nishimura-san
did good job. I'd like to keep that available as much as possible.

> Something you might have missed when considering many readers (stats
> updaters): the move_account end does not wait for a moment when there
> are no readers, that would indeed be a losing strategy; it just waits
> for each cpu that's updating page stats to leave that section, so every
> cpu is sure to notice and hold off if it then tries to update the page
> which is to be moved.  (I may not be explaining that very well!)
>

Hmm, yeah, maybe I miss somehing.

BTW, if nesting, mem_cgroup_end_update_page_stat() seems to make counter minus.

Thanks,
-Kame


WARNING: multiple messages have this Message-ID (diff)
From: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Hugh Dickins <hughd@google.com>
Cc: Sha Zhengju <handai.szj@gmail.com>, Michal Hocko <mhocko@suse.cz>,
	Johannes Weiner <hannes@cmpxchg.org>,
	linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	akpm@linux-foundation.org, gthelen@google.com,
	fengguang.wu@intel.com, glommer@parallels.com,
	dchinner@redhat.com, Sha Zhengju <handai.szj@taobao.com>
Subject: Re: [PATCH V3 4/8] memcg: add per cgroup dirty pages accounting
Date: Wed, 09 Jan 2013 16:24:34 +0900	[thread overview]
Message-ID: <50ED1B32.2030007@jp.fujitsu.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1301082030100.5319@eggly.anvils>

(2013/01/09 14:15), Hugh Dickins wrote:
> On Mon, 7 Jan 2013, Kamezawa Hiroyuki wrote:
>> (2013/01/07 5:02), Hugh Dickins wrote:
>>>
>>> Forgive me, I must confess I'm no more than skimming this thread,
>>> and don't like dumping unsigned-off patches on people; but thought
>>> that on balance it might be more helpful than not if I offer you a
>>> patch I worked on around 3.6-rc2 (but have updated to 3.8-rc2 below).
>>>
>>> I too was getting depressed by the constraints imposed by
>>> mem_cgroup_{begin,end}_update_page_stat (good job though Kamezawa-san
>>> did to minimize them), and wanted to replace by something freer, more
>>> RCU-like.  In the end it seemed more effort than it was worth to go
>>> as far as I wanted, but I do think that this is some improvement over
>>> what we currently have, and should deal with your recursion issue.
>>>
>> In what case does this improve performance ?
>
> Perhaps none.  I was aiming to not degrade performance at the stats
> update end, and make it more flexible, so new stats can be updated which
> would be problematic today (for lock ordering and recursion reasons).
>
> I've not done any performance measurement on it, and don't have enough
> cpus for an interesting report; but if someone thinks it might solve a
> problem for them, and has plenty of cpus to test with, please go ahead,
> we'd be glad to hear the results.
>
>> Hi, this patch seems interesting but...doesn't this make move_account() very
>> slow if the number of cpus increases because of scanning all cpus per a page
>> ?
>> And this looks like reader-can-block-writer percpu rwlock..it's too heavy to
>> writers if there are many readers.
>
> I was happy to make the relatively rare move_account end considerably
> heavier.  I'll be disappointed if it turns out to be prohibitively
> heavy at that end - if we're going to make move_account impossible,
> there are much easier ways to achieve that! - but it is a possibility.
>

move_account at task-move has been required feature for NEC and Nishimura-san
did good job. I'd like to keep that available as much as possible.

> Something you might have missed when considering many readers (stats
> updaters): the move_account end does not wait for a moment when there
> are no readers, that would indeed be a losing strategy; it just waits
> for each cpu that's updating page stats to leave that section, so every
> cpu is sure to notice and hold off if it then tries to update the page
> which is to be moved.  (I may not be explaining that very well!)
>

Hmm, yeah, maybe I miss somehing.

BTW, if nesting, mem_cgroup_end_update_page_stat() seems to make counter minus.

Thanks,
-Kame


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Hugh Dickins <hughd@google.com>
Cc: Sha Zhengju <handai.szj@gmail.com>, Michal Hocko <mhocko@suse.cz>,
	Johannes Weiner <hannes@cmpxchg.org>,
	linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	akpm@linux-foundation.org, gthelen@google.com,
	fengguang.wu@intel.com, glommer@parallels.com,
	dchinner@redhat.com, Sha Zhengju <handai.szj@taobao.com>
Subject: Re: [PATCH V3 4/8] memcg: add per cgroup dirty pages accounting
Date: Wed, 09 Jan 2013 16:24:34 +0900	[thread overview]
Message-ID: <50ED1B32.2030007@jp.fujitsu.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1301082030100.5319@eggly.anvils>

(2013/01/09 14:15), Hugh Dickins wrote:
> On Mon, 7 Jan 2013, Kamezawa Hiroyuki wrote:
>> (2013/01/07 5:02), Hugh Dickins wrote:
>>>
>>> Forgive me, I must confess I'm no more than skimming this thread,
>>> and don't like dumping unsigned-off patches on people; but thought
>>> that on balance it might be more helpful than not if I offer you a
>>> patch I worked on around 3.6-rc2 (but have updated to 3.8-rc2 below).
>>>
>>> I too was getting depressed by the constraints imposed by
>>> mem_cgroup_{begin,end}_update_page_stat (good job though Kamezawa-san
>>> did to minimize them), and wanted to replace by something freer, more
>>> RCU-like.  In the end it seemed more effort than it was worth to go
>>> as far as I wanted, but I do think that this is some improvement over
>>> what we currently have, and should deal with your recursion issue.
>>>
>> In what case does this improve performance ?
>
> Perhaps none.  I was aiming to not degrade performance at the stats
> update end, and make it more flexible, so new stats can be updated which
> would be problematic today (for lock ordering and recursion reasons).
>
> I've not done any performance measurement on it, and don't have enough
> cpus for an interesting report; but if someone thinks it might solve a
> problem for them, and has plenty of cpus to test with, please go ahead,
> we'd be glad to hear the results.
>
>> Hi, this patch seems interesting but...doesn't this make move_account() very
>> slow if the number of cpus increases because of scanning all cpus per a page
>> ?
>> And this looks like reader-can-block-writer percpu rwlock..it's too heavy to
>> writers if there are many readers.
>
> I was happy to make the relatively rare move_account end considerably
> heavier.  I'll be disappointed if it turns out to be prohibitively
> heavy at that end - if we're going to make move_account impossible,
> there are much easier ways to achieve that! - but it is a possibility.
>

move_account at task-move has been required feature for NEC and Nishimura-san
did good job. I'd like to keep that available as much as possible.

> Something you might have missed when considering many readers (stats
> updaters): the move_account end does not wait for a moment when there
> are no readers, that would indeed be a losing strategy; it just waits
> for each cpu that's updating page stats to leave that section, so every
> cpu is sure to notice and hold off if it then tries to update the page
> which is to be moved.  (I may not be explaining that very well!)
>

Hmm, yeah, maybe I miss somehing.

BTW, if nesting, mem_cgroup_end_update_page_stat() seems to make counter minus.

Thanks,
-Kame



  parent reply	other threads:[~2013-01-09  7:24 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-25 17:18 [PATCH V3 0/8] Per-cgroup page stat accounting Sha Zhengju
2012-12-25 17:18 ` Sha Zhengju
2012-12-25 17:20 ` [PATCH V3 1/8] memcg: remove MEMCG_NR_FILE_MAPPED Sha Zhengju
2012-12-25 17:20   ` Sha Zhengju
2012-12-25 17:24 ` [PATCH V3 3/8] use vfs __set_page_dirty interface instead of doing it inside filesystem Sha Zhengju
2012-12-25 17:24   ` Sha Zhengju
     [not found]   ` <1356456261-14579-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2012-12-28  0:41     ` Kamezawa Hiroyuki
2012-12-28  0:41       ` Kamezawa Hiroyuki
2012-12-28  0:41       ` Kamezawa Hiroyuki
2012-12-25 17:26 ` [PATCH V3 4/8] memcg: add per cgroup dirty pages accounting Sha Zhengju
2012-12-25 17:26   ` Sha Zhengju
2013-01-02 10:44   ` Michal Hocko
2013-01-02 10:44     ` Michal Hocko
2013-01-05  4:48     ` Sha Zhengju
2013-01-05  4:48       ` Sha Zhengju
2013-01-06 20:02       ` Hugh Dickins
2013-01-06 20:02         ` Hugh Dickins
     [not found]         ` <alpine.LNX.2.00.1301061135400.29149-fupSdm12i1nKWymIFiNcPA@public.gmane.org>
2013-01-07  7:49           ` Kamezawa Hiroyuki
2013-01-07  7:49             ` Kamezawa Hiroyuki
2013-01-07  7:49             ` Kamezawa Hiroyuki
2013-01-09  5:15             ` Hugh Dickins
2013-01-09  5:15               ` Hugh Dickins
     [not found]               ` <alpine.LNX.2.00.1301082030100.5319-fupSdm12i1nKWymIFiNcPA@public.gmane.org>
2013-01-09  7:24                 ` Kamezawa Hiroyuki [this message]
2013-01-09  7:24                   ` Kamezawa Hiroyuki
2013-01-09  7:24                   ` Kamezawa Hiroyuki
2013-01-09 14:35           ` Sha Zhengju
2013-01-09 14:35             ` Sha Zhengju
2013-01-09 14:35             ` Sha Zhengju
     [not found]             ` <CAFj3OHVUx0bZyEGQU_CApVbgz7SrX3BQ+0U5fRV=En800wv+cQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-09 14:47               ` Michal Hocko
2013-01-09 14:47                 ` Michal Hocko
2013-01-09 14:47                 ` Michal Hocko
     [not found]       ` <CAFj3OHXKyMO3gwghiBAmbowvqko-JqLtKroX2kzin1rk=q9tZg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-07  7:25         ` Kamezawa Hiroyuki
2013-01-07  7:25           ` Kamezawa Hiroyuki
2013-01-07  7:25           ` Kamezawa Hiroyuki
     [not found]           ` <50EA7860.6030300-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-01-09 15:02             ` Sha Zhengju
2013-01-09 15:02               ` Sha Zhengju
2013-01-09 15:02               ` Sha Zhengju
     [not found]               ` <CAFj3OHXMgRG6u2YoM7y5WuPo2ZNA1yPmKRV29FYj9B6Wj_c6Lw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-10  2:16                 ` Kamezawa Hiroyuki
2013-01-10  2:16                   ` Kamezawa Hiroyuki
2013-01-10  2:16                   ` Kamezawa Hiroyuki
2013-01-10  4:26                   ` Sha Zhengju
2013-01-10  4:26                     ` Sha Zhengju
2013-01-10  4:26                     ` Sha Zhengju
     [not found]                     ` <CAFj3OHW=n22veXzR27qfc+10t-nETU=B78NULPXrEDT1S-KsOw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-10  5:03                       ` Kamezawa Hiroyuki
2013-01-10  5:03                         ` Kamezawa Hiroyuki
2013-01-10  5:03                         ` Kamezawa Hiroyuki
     [not found]                         ` <50EE4B84.5080205-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-01-10  8:28                           ` Sha Zhengju
2013-01-10  8:28                             ` Sha Zhengju
2013-01-10  8:28                             ` Sha Zhengju
2013-05-03  9:11     ` Michal Hocko
2013-05-03  9:11       ` Michal Hocko
2013-05-03  9:59       ` Sha Zhengju
2013-05-03  9:59         ` Sha Zhengju
2013-01-06 20:07   ` Greg Thelen
2013-01-06 20:07     ` Greg Thelen
2013-01-06 20:07     ` Greg Thelen
     [not found]     ` <xr93obh2krcr.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2013-01-09  9:45       ` Sha Zhengju
2013-01-09  9:45         ` Sha Zhengju
2013-01-09  9:45         ` Sha Zhengju
2012-12-25 17:26 ` [PATCH V3 5/8] memcg: add per cgroup writeback " Sha Zhengju
2012-12-25 17:26   ` Sha Zhengju
2012-12-28  0:52   ` Kamezawa Hiroyuki
2012-12-28  0:52     ` Kamezawa Hiroyuki
     [not found]   ` <1356456409-14701-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2013-01-02 11:15     ` Michal Hocko
2013-01-02 11:15       ` Michal Hocko
2013-01-02 11:15       ` Michal Hocko
2013-01-06 20:07   ` Greg Thelen
2013-01-06 20:07     ` Greg Thelen
2013-01-09  9:08     ` Sha Zhengju
2013-01-09  9:08       ` Sha Zhengju
2012-12-25 17:27 ` [PATCH V3 6/8] memcg: Don't account root_mem_cgroup page statistics Sha Zhengju
2012-12-25 17:27   ` Sha Zhengju
2012-12-28  1:04   ` Kamezawa Hiroyuki
2012-12-28  1:04     ` Kamezawa Hiroyuki
     [not found]     ` <50DCF00B.5040100-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-01-05  7:38       ` Sha Zhengju
2013-01-05  7:38         ` Sha Zhengju
2013-01-05  7:38         ` Sha Zhengju
     [not found]   ` <1356456447-14740-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2013-01-02 12:27     ` Michal Hocko
2013-01-02 12:27       ` Michal Hocko
2013-01-02 12:27       ` Michal Hocko
     [not found]       ` <20130102122712.GE22160-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-01-05 10:52         ` Sha Zhengju
2013-01-05 10:52           ` Sha Zhengju
2013-01-05 10:52           ` Sha Zhengju
2013-01-09 12:57           ` Michal Hocko
2013-01-09 12:57             ` Michal Hocko
     [not found] ` <1356455919-14445-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2012-12-25 17:22   ` [PATCH V3 2/8] Make TestSetPageDirty and dirty page accounting in one func Sha Zhengju
2012-12-25 17:22     ` Sha Zhengju
2012-12-25 17:22     ` Sha Zhengju
2012-12-28  0:39     ` Kamezawa Hiroyuki
2012-12-28  0:39       ` Kamezawa Hiroyuki
2013-01-05  2:34       ` Sha Zhengju
2013-01-05  2:34         ` Sha Zhengju
2013-01-02  9:08     ` Michal Hocko
2013-01-02  9:08       ` Michal Hocko
     [not found]       ` <20130102090803.GB22160-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-01-05  2:49         ` Sha Zhengju
2013-01-05  2:49           ` Sha Zhengju
2013-01-05  2:49           ` Sha Zhengju
     [not found]           ` <CAFj3OHUCQkqB2+ky9wxFpkNYcn2=6t9Qd7XFf3RBY0F4Wxyqcg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-05 10:45             ` Michal Hocko
2013-01-05 10:45               ` Michal Hocko
2013-01-05 10:45               ` Michal Hocko
2012-12-25 17:27   ` [PATCH V3 7/8] memcg: disable memcg page stat accounting code when not in use Sha Zhengju
2012-12-25 17:27     ` Sha Zhengju
2012-12-25 17:27     ` Sha Zhengju
     [not found]     ` <1356456477-14780-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2012-12-28  1:06       ` Kamezawa Hiroyuki
2012-12-28  1:06         ` Kamezawa Hiroyuki
2012-12-28  1:06         ` Kamezawa Hiroyuki
2012-12-28  1:45     ` Kamezawa Hiroyuki
2012-12-28  1:45       ` Kamezawa Hiroyuki
2013-01-05 11:06       ` Sha Zhengju
2013-01-05 11:06         ` Sha Zhengju
2013-01-02 13:35     ` Michal Hocko
2013-01-02 13:35       ` Michal Hocko
2012-12-25 17:28   ` [PATCH V3 8/8] memcg: Document cgroup dirty/writeback memory statistics Sha Zhengju
2012-12-25 17:28     ` Sha Zhengju
2012-12-25 17:28     ` Sha Zhengju
     [not found]     ` <1356456501-14818-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org>
2012-12-28  1:10       ` Kamezawa Hiroyuki
2012-12-28  1:10         ` Kamezawa Hiroyuki
2012-12-28  1:10         ` Kamezawa Hiroyuki
     [not found]         ` <50DCF185.7050408-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-01-06  2:55           ` Sha Zhengju
2013-01-06  2:55             ` Sha Zhengju
2013-01-06  2:55             ` Sha Zhengju
2013-01-02 13:36       ` Michal Hocko
2013-01-02 13:36         ` Michal Hocko
2013-01-02 13:36         ` Michal Hocko

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=50ED1B32.2030007@jp.fujitsu.com \
    --to=kamezawa.hiroyu-+cum20s59erqfuhtdcdx3a@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dchinner-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org \
    --cc=gthelen-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org \
    --cc=handai.szj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=mhocko-AlSwsSmVLrQ@public.gmane.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.