* [PATCH 2/2] pkt_sched: Change PSCHED_SHIFT from 10 to 6
@ 2009-06-09 8:05 Jarek Poplawski
2009-06-09 12:21 ` David Miller
2009-06-15 9:15 ` [PATCH 3/2] pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US Jarek Poplawski
0 siblings, 2 replies; 4+ messages in thread
From: Jarek Poplawski @ 2009-06-09 8:05 UTC (permalink / raw)
To: David Miller
Cc: Patrick McHardy, Antonio Almeida, Stephen Hemminger, netdev,
Martin Devera, Eric Dumazet, Vladimir Ivashchenko,
Badalian Vyacheslav
Change PSCHED_SHIFT from 10 to 6 to increase schedulers time
resolution. This will increase 16x a number of (internal) ticks per
nanosecond, and is needed to improve accuracy of schedulers based on
rate tables, like HTB, TBF or CBQ, with rates above 100Mbit. It is
assumed this change is safe for 32bit accounting of time diffs up
to 2 minutes, which should be enough for common use (extremely low
rate values may overflow, so get inaccurate instead). To make full
use of this change an updated iproute2 will be needed. (But using
older iproute2 should be safe too.)
This change breaks ticks - microseconds similarity, so some minor code
fixes might be needed. It is also planned to change naming adequately
eg. to PSCHED_TICKS2NS() etc. in the near future.
Reported-by: Antonio Almeida <vexwek@gmail.com>
Tested-by: Antonio Almeida <vexwek@gmail.com>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
---
diff -Nurp a/include/net/pkt_sched.h b/include/net/pkt_sched.h
--- a/include/net/pkt_sched.h 2009-06-08 23:06:31.000000000 +0200
+++ b/include/net/pkt_sched.h 2009-06-08 23:23:53.000000000 +0200
@@ -41,8 +41,8 @@ static inline void *qdisc_priv(struct Qd
typedef u64 psched_time_t;
typedef long psched_tdiff_t;
-/* Avoid doing 64 bit divide by 1000 */
-#define PSCHED_SHIFT 10
+/* Avoid doing 64 bit divide */
+#define PSCHED_SHIFT 6
#define PSCHED_US2NS(x) ((s64)(x) << PSCHED_SHIFT)
#define PSCHED_NS2US(x) ((x) >> PSCHED_SHIFT)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] pkt_sched: Change PSCHED_SHIFT from 10 to 6
2009-06-09 8:05 [PATCH 2/2] pkt_sched: Change PSCHED_SHIFT from 10 to 6 Jarek Poplawski
@ 2009-06-09 12:21 ` David Miller
2009-06-15 9:15 ` [PATCH 3/2] pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US Jarek Poplawski
1 sibling, 0 replies; 4+ messages in thread
From: David Miller @ 2009-06-09 12:21 UTC (permalink / raw)
To: jarkao2; +Cc: kaber, vexwek, shemminger, netdev, devik, dada1, hazard, slavon
From: Jarek Poplawski <jarkao2@gmail.com>
Date: Tue, 9 Jun 2009 08:05:13 +0000
> Change PSCHED_SHIFT from 10 to 6 to increase schedulers time
> resolution. This will increase 16x a number of (internal) ticks per
> nanosecond, and is needed to improve accuracy of schedulers based on
> rate tables, like HTB, TBF or CBQ, with rates above 100Mbit. It is
> assumed this change is safe for 32bit accounting of time diffs up
> to 2 minutes, which should be enough for common use (extremely low
> rate values may overflow, so get inaccurate instead). To make full
> use of this change an updated iproute2 will be needed. (But using
> older iproute2 should be safe too.)
>
> This change breaks ticks - microseconds similarity, so some minor code
> fixes might be needed. It is also planned to change naming adequately
> eg. to PSCHED_TICKS2NS() etc. in the near future.
>
> Reported-by: Antonio Almeida <vexwek@gmail.com>
> Tested-by: Antonio Almeida <vexwek@gmail.com>
> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Applied.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 3/2] pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US
2009-06-09 8:05 [PATCH 2/2] pkt_sched: Change PSCHED_SHIFT from 10 to 6 Jarek Poplawski
2009-06-09 12:21 ` David Miller
@ 2009-06-15 9:15 ` Jarek Poplawski
2009-06-15 9:32 ` David Miller
1 sibling, 1 reply; 4+ messages in thread
From: Jarek Poplawski @ 2009-06-15 9:15 UTC (permalink / raw)
To: David Miller
Cc: Patrick McHardy, Antonio Almeida, Stephen Hemminger, netdev,
Martin Devera, Eric Dumazet, Vladimir Ivashchenko,
Badalian Vyacheslav
On Tue, Jun 09, 2009 at 08:05:13AM +0000, Jarek Poplawski wrote:
...
> This change breaks ticks - microseconds similarity, so some minor code
> fixes might be needed. It is also planned to change naming adequately
> eg. to PSCHED_TICKS2NS() etc. in the near future.
-------------------->
pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US
Let's use TICKS instead of US, so PSCHED_TICKS2NS and PSCHED_NS2TICKS
(like in PSCHED_TICKS_PER_SEC already) to avoid misleading.
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
---
include/net/pkt_sched.h | 8 ++++----
net/sched/sch_api.c | 4 ++--
net/sched/sch_cbq.c | 4 ++--
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
index 120935b..82a3191 100644
--- a/include/net/pkt_sched.h
+++ b/include/net/pkt_sched.h
@@ -43,15 +43,15 @@ typedef long psched_tdiff_t;
/* Avoid doing 64 bit divide */
#define PSCHED_SHIFT 6
-#define PSCHED_US2NS(x) ((s64)(x) << PSCHED_SHIFT)
-#define PSCHED_NS2US(x) ((x) >> PSCHED_SHIFT)
+#define PSCHED_TICKS2NS(x) ((s64)(x) << PSCHED_SHIFT)
+#define PSCHED_NS2TICKS(x) ((x) >> PSCHED_SHIFT)
-#define PSCHED_TICKS_PER_SEC PSCHED_NS2US(NSEC_PER_SEC)
+#define PSCHED_TICKS_PER_SEC PSCHED_NS2TICKS(NSEC_PER_SEC)
#define PSCHED_PASTPERFECT 0
static inline psched_time_t psched_get_time(void)
{
- return PSCHED_NS2US(ktime_to_ns(ktime_get()));
+ return PSCHED_NS2TICKS(ktime_to_ns(ktime_get()));
}
static inline psched_tdiff_t
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 3200979..24d17ce 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -484,7 +484,7 @@ void qdisc_watchdog_schedule(struct qdisc_watchdog *wd, psched_time_t expires)
wd->qdisc->flags |= TCQ_F_THROTTLED;
time = ktime_set(0, 0);
- time = ktime_add_ns(time, PSCHED_US2NS(expires));
+ time = ktime_add_ns(time, PSCHED_TICKS2NS(expires));
hrtimer_start(&wd->timer, time, HRTIMER_MODE_ABS);
}
EXPORT_SYMBOL(qdisc_watchdog_schedule);
@@ -1680,7 +1680,7 @@ static int psched_show(struct seq_file *seq, void *v)
hrtimer_get_res(CLOCK_MONOTONIC, &ts);
seq_printf(seq, "%08x %08x %08x %08x\n",
- (u32)NSEC_PER_USEC, (u32)PSCHED_US2NS(1),
+ (u32)NSEC_PER_USEC, (u32)PSCHED_TICKS2NS(1),
1000000,
(u32)NSEC_PER_SEC/(u32)ktime_to_ns(timespec_to_ktime(ts)));
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
index d728d81..23a1676 100644
--- a/net/sched/sch_cbq.c
+++ b/net/sched/sch_cbq.c
@@ -509,7 +509,7 @@ static void cbq_ovl_delay(struct cbq_class *cl)
q->pmask |= (1<<TC_CBQ_MAXPRIO);
expires = ktime_set(0, 0);
- expires = ktime_add_ns(expires, PSCHED_US2NS(sched));
+ expires = ktime_add_ns(expires, PSCHED_TICKS2NS(sched));
if (hrtimer_try_to_cancel(&q->delay_timer) &&
ktime_to_ns(ktime_sub(
hrtimer_get_expires(&q->delay_timer),
@@ -620,7 +620,7 @@ static enum hrtimer_restart cbq_undelay(struct hrtimer *timer)
ktime_t time;
time = ktime_set(0, 0);
- time = ktime_add_ns(time, PSCHED_US2NS(now + delay));
+ time = ktime_add_ns(time, PSCHED_TICKS2NS(now + delay));
hrtimer_start(&q->delay_timer, time, HRTIMER_MODE_ABS);
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 3/2] pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US
2009-06-15 9:15 ` [PATCH 3/2] pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US Jarek Poplawski
@ 2009-06-15 9:32 ` David Miller
0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2009-06-15 9:32 UTC (permalink / raw)
To: jarkao2; +Cc: kaber, vexwek, shemminger, netdev, devik, dada1, hazard, slavon
From: Jarek Poplawski <jarkao2@gmail.com>
Date: Mon, 15 Jun 2009 09:15:23 +0000
> On Tue, Jun 09, 2009 at 08:05:13AM +0000, Jarek Poplawski wrote:
> ...
>> This change breaks ticks - microseconds similarity, so some minor code
>> fixes might be needed. It is also planned to change naming adequately
>> eg. to PSCHED_TICKS2NS() etc. in the near future.
>
> -------------------->
> pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US
>
> Let's use TICKS instead of US, so PSCHED_TICKS2NS and PSCHED_NS2TICKS
> (like in PSCHED_TICKS_PER_SEC already) to avoid misleading.
>
> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Also applied to net-next-2.6, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-06-15 9:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-09 8:05 [PATCH 2/2] pkt_sched: Change PSCHED_SHIFT from 10 to 6 Jarek Poplawski
2009-06-09 12:21 ` David Miller
2009-06-15 9:15 ` [PATCH 3/2] pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US Jarek Poplawski
2009-06-15 9:32 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).