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: <200709072337.l87Nbv7j430732@sabah.engr.sgi.com>
Date:	Fri, 7 Sep 2007 16:37:57 -0700 (PDT)
From:	Jonathan Lim <jlim@....com>
To:	balbir@...ux.vnet.ibm.com
Cc:	guichaz@...oo.fr (Guillaume Chazarain),
	akpm@...ux-foundation.org (Andrew Morton),
	linux-kernel@...r.kernel.org (Linux Kernel Mailing List),
	jlan@...ulhu.engr.sgi.com (Jay Lan)
Subject: Re: [PATCH] Add all thread stats for TASKSTATS_CMD_ATTR_TGID

On Fri Aug 31 00:24:47 2007, balbir@...ux.vnet.ibm.com wrote:
> 
> Jonathan Lim wrote:
> > On Sat Aug 25 21:58:44 2007, balbir@...ux.vnet.ibm.com wrote:
> >>> Also, I don't understand why the code to update btime:
> >>>
> >>>         /* calculate task elapsed time in timespec */
> >>>         do_posix_clock_monotonic_gettime(&uptime);
> >>>         ts = timespec_sub(uptime, tsk->start_time);
> >>> 	...
> >>>         stats->ac_btime = get_seconds() - ts.tv_sec;
> >>>
> >>> does not simply use tsk->start_time or tsk->real_start_time without
> >>> comparing it to the current time.
> >> From what I understand, task->start_time and task->real_start_time
> >> are taken from the realtime clock. The accounting in CSA seems
> >> to be very similar to the accounting done in do_acct_process()
> >> (kernel/acct.c).
> > 
> > In CSA 3.0 ...
> > 
> > csa_acct_eop(int exitcode, struct task_struct *p)
> > 
> >         csa->ac_btime = boottime +
> >                         ((p->start_time.tv_nsec < NSEC_PER_SEC/2) ?
> >                          p->start_time.tv_sec :
> >                          p->start_time.tv_sec +1);
> > 
> > where 
> > 
> >         do_posix_clock_monotonic_gettime(&uptime);
> >         boottime = xtime.tv_sec - uptime.tv_sec;
> > 
> > In an upcoming version of CSA ...
> > 
> > csa_acct_eop(struct taskstats *p)
> > 
> >         csa->ac_btime = p->ac_btime;
> > 
> > where
> > 
> >         do_posix_clock_monotonic_gettime(&uptime);
> >         ts = uptime - tsk->start_time;
> >         p->ac_btime = get_seconds() - ts.tv_sec;
> >                     = xtime.tv_sec - (uptime - tsk->start_time);
> >                     = (xtime.tv_sec - uptime) + tsk->start_time;
> > 
> > So they're basically equivalent.
> 
> Excellent, so can Guillaume change ac_btime to be just tsk->start_time?

I don't think so.  Current time (xtime) is relative to the epoch; uptime and
tsk->start_time (jiffies) are both relative to some boot time.  So you need to
subtract uptime from xtime to get the boot time relative to the epoch, then add
tsk->start_time.  The result is what ac_btime should be set to.

I think his recent changes are as follows:

--- a/kernel/tsacct.c   Fri Aug 31 01:42:23 2007 -0700
+++ b/kernel/tsacct.c   Tue Aug 28 20:35:27 2007 +0200
...
-void bacct_add_tsk(struct taskstats *stats, struct task_struct *tsk)
+static void fill_wall_times(struct taskstats *stats, struct task_struct *task)
...
-       ts = timespec_sub(uptime, tsk->start_time);
+       ts = timespec_sub(uptime, task->start_time);
...
-       stats->ac_btime = get_seconds() - ts.tv_sec;
...
+       stats->ac_btime = get_seconds() - ts.tv_sec;

So really no different from before, which is correct.

Jonathan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ