* help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
@ 2005-03-22 22:09 Arun Srinivas
2005-03-22 23:16 ` Nick Piggin
0 siblings, 1 reply; 15+ messages in thread
From: Arun Srinivas @ 2005-03-22 22:09 UTC (permalink / raw)
To: linux-kernel
Pls. help me. I went through the sched.c for kernel 2.6 and saw that it
supports
hyperthreading.I would be glad if someone could answer this question....(if
am not wrong a HT processor has 2 architectural states and one execution
unit...i.e., two pipeline streams)
1)when there are 2 processes a parent and child(created by fork()) do they
get scheduled @ the same time...ie., when the parent process is put into one
pipeline, do the child also gets scheduled the same time?
2) what abt in the case of threads(I read tht as opposed to kernel2.4,where
threads are treated as processes) ..kernel 2.6 treats threads as threads.
So, when two paired threads get into execution are they always scheduled at
the same time?
Also, it would be helpful if someone could suggest which part of sched.c
shud i look into to find out how threads are scheduled for a normal
processor and for a hyperthreaded processor
Pls. CC your replies to this email address getarunsri@hotmail.com
Thanks
Arun
_________________________________________________________________
Don't know where to look for your life partner?
http://www.bharatmatrimony.com/cgi-bin/bmclicks1.cgi?74 Trust
BharatMatrimony.com
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
2005-03-22 22:09 help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions? Arun Srinivas
@ 2005-03-22 23:16 ` Nick Piggin
2005-03-23 6:07 ` Arun Srinivas
2005-03-23 7:07 ` help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions? Jan Engelhardt
0 siblings, 2 replies; 15+ messages in thread
From: Nick Piggin @ 2005-03-22 23:16 UTC (permalink / raw)
To: Arun Srinivas; +Cc: linux-kernel
Arun Srinivas wrote:
> Pls. help me. I went through the sched.c for kernel 2.6 and saw that it
> supports
> hyperthreading.I would be glad if someone could answer this question....(if
> am not wrong a HT processor has 2 architectural states and one execution
> unit...i.e., two pipeline streams)
>
> 1)when there are 2 processes a parent and child(created by fork()) do they
> get scheduled @ the same time...ie., when the parent process is put into
> one
> pipeline, do the child also gets scheduled the same time?
>
No.
> 2) what abt in the case of threads(I read tht as opposed to kernel2.4,where
> threads are treated as processes) ..kernel 2.6 treats threads as threads.
> So, when two paired threads get into execution are they always scheduled at
> the same time?
>
No.
> Also, it would be helpful if someone could suggest which part of sched.c
> shud i look into to find out how threads are scheduled for a normal
> processor and for a hyperthreaded processor
>
It is pretty tricky. Basically processes on different CPUs are
scheduled completely independently of one another. The only time
when they may get moved from one CPU to another is with
load_balance, load_balance_newidle, active_load_balance,
try_to_wake_up, sched_exec, wake_up_new_task.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
2005-03-22 23:16 ` Nick Piggin
@ 2005-03-23 6:07 ` Arun Srinivas
2005-03-23 7:37 ` Nick Piggin
2005-03-23 7:07 ` help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions? Jan Engelhardt
1 sibling, 1 reply; 15+ messages in thread
From: Arun Srinivas @ 2005-03-23 6:07 UTC (permalink / raw)
To: nickpiggin; +Cc: linux-kernel
If the SMT (apart from SMP) support is enabled in the .config file, does
the kernel recogonize the 2 logical processor as 2 logical or 2 physical
processors?
Also, as the hyperthreaded processor may schedule 2 threads in the 2 logical
cpu's, and it may not necessarily be form the same process i.e., the 2
thread it schedules may be from the same or from the different process.
So, is there any way I can tell the scheduler (assuming I make the scheduler
recogonize my 2 threads..i.e., it knows their pid) to schedule always my 2
threads @ the same time? How do I go abt it?
Pls. help.Thanks in Advance.
>From: Nick Piggin <nickpiggin@yahoo.com.au>
>To: Arun Srinivas <getarunsri@hotmail.com>
>CC: linux-kernel@vger.kernel.org
>Subject: Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related
>questions?
>Date: Wed, 23 Mar 2005 10:16:20 +1100
>
>Arun Srinivas wrote:
>>Pls. help me. I went through the sched.c for kernel 2.6 and saw that it
>>supports
>>hyperthreading.I would be glad if someone could answer this
>>question....(if
>>am not wrong a HT processor has 2 architectural states and one execution
>>unit...i.e., two pipeline streams)
>>
>>1)when there are 2 processes a parent and child(created by fork()) do they
>>get scheduled @ the same time...ie., when the parent process is put into
>>one
>>pipeline, do the child also gets scheduled the same time?
>>
>
>No.
>
>>2) what abt in the case of threads(I read tht as opposed to
>>kernel2.4,where
>>threads are treated as processes) ..kernel 2.6 treats threads as threads.
>>So, when two paired threads get into execution are they always scheduled
>>at
>>the same time?
>>
>
>No.
>
>>Also, it would be helpful if someone could suggest which part of sched.c
>>shud i look into to find out how threads are scheduled for a normal
>>processor and for a hyperthreaded processor
>>
>
>It is pretty tricky. Basically processes on different CPUs are
>scheduled completely independently of one another. The only time
>when they may get moved from one CPU to another is with
>load_balance, load_balance_newidle, active_load_balance,
>try_to_wake_up, sched_exec, wake_up_new_task.
>
_________________________________________________________________
News, views and gossip. http://www.msn.co.in/Cinema/ Get it all at MSN
Cinema!
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
2005-03-22 23:16 ` Nick Piggin
2005-03-23 6:07 ` Arun Srinivas
@ 2005-03-23 7:07 ` Jan Engelhardt
1 sibling, 0 replies; 15+ messages in thread
From: Jan Engelhardt @ 2005-03-23 7:07 UTC (permalink / raw)
To: Nick Piggin; +Cc: Arun Srinivas, linux-kernel
> It is pretty tricky. Basically processes on different CPUs are
> scheduled completely independently of one another. The only time
> when they may get moved from one CPU to another is with
> load_balance, load_balance_newidle, active_load_balance,
> try_to_wake_up, sched_exec, wake_up_new_task.
And of course, migrate_task() if I'm not mistaken. :)
Jan Engelhardt
--
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
2005-03-23 6:07 ` Arun Srinivas
@ 2005-03-23 7:37 ` Nick Piggin
2005-03-23 9:47 ` Arun Srinivas
2005-03-29 3:28 ` sched_setscheduler() and usage issues ....please help Arun Srinivas
0 siblings, 2 replies; 15+ messages in thread
From: Nick Piggin @ 2005-03-23 7:37 UTC (permalink / raw)
To: Arun Srinivas; +Cc: linux-kernel
Arun Srinivas wrote:
> If the SMT (apart from SMP) support is enabled in the .config file,
> does the kernel recogonize the 2 logical processor as 2 logical or 2
> physical processors?
>
You shouldn't be able to select SMT if SMP is not enabled.
If SMT and SMP is selected, then the scheduler will recognise
the 2 processors as logical ones.
> Also, as the hyperthreaded processor may schedule 2 threads in the 2
> logical cpu's, and it may not necessarily be form the same process i.e.,
> the 2 thread it schedules may be from the same or from the different
> process.
>
Yes.
> So, is there any way I can tell the scheduler (assuming I make the
> scheduler recogonize my 2 threads..i.e., it knows their pid) to schedule
> always my 2 threads @ the same time? How do I go abt it?
>
Use sched_setaffinity to force each thread onto the particular
CPU. Use sched_setscheduler to acquire a realtime scheduling
policy. Then use mutexes to synchronise your threads so they
run the desired code segment at the same time.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
2005-03-23 7:37 ` Nick Piggin
@ 2005-03-23 9:47 ` Arun Srinivas
2005-03-24 0:17 ` Nick Piggin
2005-03-29 3:28 ` sched_setscheduler() and usage issues ....please help Arun Srinivas
1 sibling, 1 reply; 15+ messages in thread
From: Arun Srinivas @ 2005-03-23 9:47 UTC (permalink / raw)
To: nickpiggin; +Cc: linux-kernel
few more trivial Q's (bear with me I'm a newbie to kernel world):
1) As I said I have a process that spawns 2 threads(thread A and B).I am
trying to measure the exact time @ which they are being scheduled.For this I
am using the rdtsc() (when threads A and B come) in enqueue_task()..where
they are being inserted into the priority array.
Is this a correct way of measuring?
2) also in task_struct.....is "tgid" the id of my process and each of
threads hav a unique pid??
3) I saw frm the kernel docs tht realtime tasks hav priority 0 to 99. So
using setscheduler means do I have to enforce a priority in one of these
ranges to make my threads as soft/hard realtime task.
thanks in advance for your patience.
>From: Nick Piggin <nickpiggin@yahoo.com.au>
>To: Arun Srinivas <getarunsri@hotmail.com>
>CC: linux-kernel@vger.kernel.org
>Subject: Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related
>questions?
>Date: Wed, 23 Mar 2005 18:37:16 +1100
>
>Arun Srinivas wrote:
>>If the SMT (apart from SMP) support is enabled in the .config file, does
>>the kernel recogonize the 2 logical processor as 2 logical or 2 physical
>>processors?
>>
>
>You shouldn't be able to select SMT if SMP is not enabled.
>If SMT and SMP is selected, then the scheduler will recognise
>the 2 processors as logical ones.
>
>>Also, as the hyperthreaded processor may schedule 2 threads in the 2
>>logical cpu's, and it may not necessarily be form the same process i.e.,
>>the 2 thread it schedules may be from the same or from the different
>>process.
>>
>
>Yes.
>
>>So, is there any way I can tell the scheduler (assuming I make the
>>scheduler recogonize my 2 threads..i.e., it knows their pid) to schedule
>>always my 2 threads @ the same time? How do I go abt it?
>>
>
>Use sched_setaffinity to force each thread onto the particular
>CPU. Use sched_setscheduler to acquire a realtime scheduling
>policy. Then use mutexes to synchronise your threads so they
>run the desired code segment at the same time.
>
_________________________________________________________________
Screensavers unlimited! http://www.msn.co.in/Download/screensaver/ Download
now!
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions?
2005-03-23 9:47 ` Arun Srinivas
@ 2005-03-24 0:17 ` Nick Piggin
0 siblings, 0 replies; 15+ messages in thread
From: Nick Piggin @ 2005-03-24 0:17 UTC (permalink / raw)
To: Arun Srinivas; +Cc: linux-kernel
Arun Srinivas wrote:
> few more trivial Q's (bear with me I'm a newbie to kernel world):
>
> 1) As I said I have a process that spawns 2 threads(thread A and B).I am
> trying to measure the exact time @ which they are being scheduled.For
> this I am using the rdtsc() (when threads A and B come) in
> enqueue_task()..where they are being inserted into the priority array.
> Is this a correct way of measuring?
>
Not exactly. They can be enqueued "onto" the runqueue without being
scheduled if there is another process running at the time.
You should look in schedule(). And use sched_clock instead of rdtsc.
I think you'll find schedule() already calls sched_clock, so you should
be able to do this with minimal overhead.
Note also, that schedule() may be called multiple times without
switching your task off the CPU - so keep that in mind if you are looking
for the time at which it is first scheduled on.
> 2) also in task_struct.....is "tgid" the id of my process and each of
> threads hav a unique pid??
>
Something like that.
> 3) I saw frm the kernel docs tht realtime tasks hav priority 0 to 99. So
> using setscheduler means do I have to enforce a priority in one of these
> ranges to make my threads as soft/hard realtime task.
>
Well, if you have nothing else running with a realtime scheduling policy,
then your process that is will always be scheduled first.
The priority only distinguishes between two realtime processes.
Oh, and Linux is not hard realtime. Meaning you don't have a deterministic
scheduling latency. But these days it is pretty good - probably not something
you'd have to worry about.
Nick
^ permalink raw reply [flat|nested] 15+ messages in thread
* sched_setscheduler() and usage issues ....please help
2005-03-23 7:37 ` Nick Piggin
2005-03-23 9:47 ` Arun Srinivas
@ 2005-03-29 3:28 ` Arun Srinivas
2005-03-29 4:40 ` Steven Rostedt
1 sibling, 1 reply; 15+ messages in thread
From: Arun Srinivas @ 2005-03-29 3:28 UTC (permalink / raw)
To: nickpiggin; +Cc: linux-kernel
I am trying to set the SCHED_FIFO policy for my process.I am using
sched_setscheduler() function to do this.
I am following the correct syntax and running it as root process.I am using
the given syntax i.e.,
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *p);
(SCHED_FIFO for the policy and priority in the range of 1 to 99 for p).
But the function returns with an value of -1. I am trying to call this
function from the user-space.
1) Is this usage correct?
2)How do I read the error code (i.e., text description of what kiind of
error occurred like for eg., ESRCH,EPERM,EINVAL).
Please help.
thanks
Arun
_________________________________________________________________
Don't know where to look for your life partner?
http://www.bharatmatrimony.com/cgi-bin/bmclicks1.cgi?74 Trust
BharatMatrimony.com
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 3:28 ` sched_setscheduler() and usage issues ....please help Arun Srinivas
@ 2005-03-29 4:40 ` Steven Rostedt
2005-03-29 4:51 ` Lee Revell
0 siblings, 1 reply; 15+ messages in thread
From: Steven Rostedt @ 2005-03-29 4:40 UTC (permalink / raw)
To: Arun Srinivas; +Cc: nickpiggin, LKML
[-- Attachment #1: Type: text/plain, Size: 252 bytes --]
On Tue, 2005-03-29 at 08:58 +0530, Arun Srinivas wrote:
> I am trying to set the SCHED_FIFO policy for my process.I am using
> sched_setscheduler() function to do this.
Attached is a little program that I use to set the priority of tasks.
-- Steve
[-- Attachment #2: setscheduler.c --]
[-- Type: text/x-csrc, Size: 1822 bytes --]
/* Copyright (C) 2004 Kihon Technologies Inc.
This utilities is free software, you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
These utilities are distributed in the hope that they will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/*
* Author: Steven Rostedt
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sched.h>
#include <strutils.h>
#include <errno.h>
void usage (char **argv)
{
char *arg = argv[0];
char *p = arg + strlen(arg);
while (p >= arg && *p != '/') p--;
p++;
fprintf(stderr,"usage: %s pid policy priority\n"
"\n\twhere policy is SCHED_RR, SCHED_FIFO or SCHED_OTHER\n"
"\n", p);
exit(-1);
}
int main (int argc, char **argv)
{
pid_t pid;
int policy;
struct sched_param p;
char *strpolicy;
if (argc != 4)
usage(argv);
strpolicy = argv[2];
pid = atoi(argv[1]);
p.sched_priority = atoi(argv[3]);
if (strcmp(strpolicy,"SCHED_RR")==0) {
policy = SCHED_RR;
} else if (strcmp(strpolicy,"SCHED_FIFO") == 0) {
policy = SCHED_FIFO;
} else if (strcmp(strpolicy,"SCHED_OTHER") == 0) {
policy = SCHED_OTHER;
} else {
fprintf(stderr,"\nunknown policy %s",strpolicy);
usage(argv);
}
if (sched_setscheduler(pid,policy,&p)) {
perror("sched_setscheduler");
exit(errno);
}
exit(0);
}
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 4:40 ` Steven Rostedt
@ 2005-03-29 4:51 ` Lee Revell
2005-03-29 6:03 ` Jan Engelhardt
0 siblings, 1 reply; 15+ messages in thread
From: Lee Revell @ 2005-03-29 4:51 UTC (permalink / raw)
To: Steven Rostedt; +Cc: Arun Srinivas, nickpiggin, LKML
On Mon, 2005-03-28 at 23:40 -0500, Steven Rostedt wrote:
> On Tue, 2005-03-29 at 08:58 +0530, Arun Srinivas wrote:
> > I am trying to set the SCHED_FIFO policy for my process.I am using
> > sched_setscheduler() function to do this.
>
> Attached is a little program that I use to set the priority of tasks.
Why not just use chrt from schedtools?
Lee
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 4:51 ` Lee Revell
@ 2005-03-29 6:03 ` Jan Engelhardt
2005-03-29 11:35 ` Steven Rostedt
2005-03-29 11:43 ` Arjan van de Ven
0 siblings, 2 replies; 15+ messages in thread
From: Jan Engelhardt @ 2005-03-29 6:03 UTC (permalink / raw)
To: Lee Revell; +Cc: Steven Rostedt, Arun Srinivas, nickpiggin, LKML
>> > I am trying to set the SCHED_FIFO policy for my process.I am using
>> > sched_setscheduler() function to do this.
>>
>> Attached is a little program that I use to set the priority of tasks.
>
>Why not just use chrt from schedtools?
Not every distro has it yet, and I like to point out that a lot of users is
still using "older" distros, such as FC2, SUSE 9.1, and also olders with Linux
2.4 kernels.
Jan Engelhardt
--
No TOFU for me, please.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 6:03 ` Jan Engelhardt
@ 2005-03-29 11:35 ` Steven Rostedt
2005-03-29 11:38 ` Jan Engelhardt
2005-03-29 11:43 ` Arjan van de Ven
1 sibling, 1 reply; 15+ messages in thread
From: Steven Rostedt @ 2005-03-29 11:35 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Lee Revell, Arun Srinivas, nickpiggin, LKML
On Tue, 2005-03-29 at 08:03 +0200, Jan Engelhardt wrote:
> >> > I am trying to set the SCHED_FIFO policy for my process.I am using
> >> > sched_setscheduler() function to do this.
> >>
> >> Attached is a little program that I use to set the priority of tasks.
> >
> >Why not just use chrt from schedtools?
>
> Not every distro has it yet, and I like to point out that a lot of users is
> still using "older" distros, such as FC2, SUSE 9.1, and also olders with Linux
> 2.4 kernels.
OK, I'm a little embarrassed. I never saw this tool. I use debian
unstable, but didn't have the package loaded. I did a apropos on
sched_setscheduler, and it didn't come up with any tools, so I just
wrote my own!
Thanks,
-- Steve
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 11:35 ` Steven Rostedt
@ 2005-03-29 11:38 ` Jan Engelhardt
0 siblings, 0 replies; 15+ messages in thread
From: Jan Engelhardt @ 2005-03-29 11:38 UTC (permalink / raw)
To: Steven Rostedt; +Cc: Lee Revell, Arun Srinivas, nickpiggin, LKML
>OK, I'm a little embarrassed. I never saw this tool. I use debian
You don't need to be. Before I got to know of this tool, I also wrote my own.
Look for "schedutils".
>unstable, but didn't have the package loaded. I did a apropos on
>sched_setscheduler, and it didn't come up with any tools, so I just
>wrote my own!
Jan Engelhardt
--
No TOFU for me, please.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 6:03 ` Jan Engelhardt
2005-03-29 11:35 ` Steven Rostedt
@ 2005-03-29 11:43 ` Arjan van de Ven
2005-03-29 11:46 ` Jan Engelhardt
1 sibling, 1 reply; 15+ messages in thread
From: Arjan van de Ven @ 2005-03-29 11:43 UTC (permalink / raw)
To: Jan Engelhardt
Cc: Lee Revell, Steven Rostedt, Arun Srinivas, nickpiggin, LKML
On Tue, 2005-03-29 at 08:03 +0200, Jan Engelhardt wrote:
> >> > I am trying to set the SCHED_FIFO policy for my process.I am using
> >> > sched_setscheduler() function to do this.
> >>
> >> Attached is a little program that I use to set the priority of tasks.
> >
> >Why not just use chrt from schedtools?
>
> Not every distro has it yet, and I like to point out that a lot of users is
> still using "older" distros, such as FC2, SUSE 9.1, and also olders with Linux
> 2.4 kernels
FC2 has this. Even FC1 had it, and I'd not be surprised if even RHL9 had
this. I'd be very susprised if SuSE 9.1 doesn't have it either.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: sched_setscheduler() and usage issues ....please help
2005-03-29 11:43 ` Arjan van de Ven
@ 2005-03-29 11:46 ` Jan Engelhardt
0 siblings, 0 replies; 15+ messages in thread
From: Jan Engelhardt @ 2005-03-29 11:46 UTC (permalink / raw)
To: Arjan van de Ven
Cc: Lee Revell, Steven Rostedt, Arun Srinivas, nickpiggin, LKML
>FC2 has this. Even FC1 had it, and I'd not be surprised if even RHL9 had
>this. I'd be very susprised if SuSE 9.1 doesn't have it either.
It was introduced with SUSE Linux 9.1. But, as usually, I usually do not care
for new packages when updating, and schedutils was not a dependency, so it
lost itself until I actively checked what it's about when the boot process
says
"Setting scheduling timeslices unused"
Jan Engelhardt
--
No TOFU for me, please.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2005-03-29 11:49 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-22 22:09 help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions? Arun Srinivas
2005-03-22 23:16 ` Nick Piggin
2005-03-23 6:07 ` Arun Srinivas
2005-03-23 7:37 ` Nick Piggin
2005-03-23 9:47 ` Arun Srinivas
2005-03-24 0:17 ` Nick Piggin
2005-03-29 3:28 ` sched_setscheduler() and usage issues ....please help Arun Srinivas
2005-03-29 4:40 ` Steven Rostedt
2005-03-29 4:51 ` Lee Revell
2005-03-29 6:03 ` Jan Engelhardt
2005-03-29 11:35 ` Steven Rostedt
2005-03-29 11:38 ` Jan Engelhardt
2005-03-29 11:43 ` Arjan van de Ven
2005-03-29 11:46 ` Jan Engelhardt
2005-03-23 7:07 ` help needed pls. scheduler(kernel 2.6) + hyperthreaded related questions? Jan Engelhardt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox