# SPDX-License-Identifier: GPL-2.0
from __future__ import print_function
data = {}
times = []
threads = []
cpus = []
def get_key(time, event, cpu, thread):
return "%d-%s-%d-%d" % (time, event, cpu, thread)
def store_key(time, cpu, thread):
if (time not in times):
times.append(time)
if (cpu not in cpus):
cpus.append(cpu)
if (thread not in threads):
threads.append(thread)
def store(time, event, cpu, thread, val, ena, run):
#print("event %s cpu %d, thread %d, time %d, val %d, ena %d, run %d" %
# (event, cpu, thread, time, val, ena, run))
store_key(time, cpu, thread)
key = get_key(time, event, cpu, thread)
data[key] = [ val, ena, run]
def get(time, event, cpu, thread):
key = get_key(time, event, cpu, thread)
return data[key][0]
def stat__cycles_k(cpu, thread, time, val, ena, run):
store(time, "cycles", cpu, thread, val, ena, run);
def stat__instructions_k(cpu, thread, time, val, ena, run):
store(time, "instructions", cpu, thread, val, ena, run);
def stat__cycles_u(cpu, thread, time, val, ena, run):
store(time, "cycles", cpu, thread, val, ena, run);
def stat__instructions_u(cpu, thread, time, val, ena, run):
store(time, "instructions", cpu, thread, val, ena, run);
def stat__cycles(cpu, thread, time, val, ena, run):
store(time, "cycles", cpu, thread, val, ena, run);
def stat__instructions(cpu, thread, time, val, ena, run):
store(time, "instructions", cpu, thread, val, ena, run);
def stat__interval(time):
for cpu in cpus:
for thread in threads:
cyc = get(time, "cycles", cpu, thread)
ins = get(time, "instructions", cpu, thread)
cpi = 0
if ins != 0:
cpi = cyc/float(ins)
print("%15f: cpu %d, thread %d -> cpi %f (%d/%d)" % (time/(float(1000000000)), cpu, thread, cpi, cyc, ins))
def trace_end():
pass
# XXX trace_end callback could be used as an alternative place
# to compute same values as in the script above:
#
# for time in times:
# for cpu in cpus:
# for thread in threads:
# cyc = get(time, "cycles", cpu, thread)
# ins = get(time, "instructions", cpu, thread)
#
# if ins != 0:
# cpi = cyc/float(ins)
#
# print("time %.9f, cpu %d, thread %d -> cpi %f" % (time/(float(1000000000)), cpu, thread, cpi))
lue='linux-2.6.38.y'>linux-2.6.38.y
| Hosts the 0x221E linux distro kernel. | Ubuntu |
| Age | Commit message (Expand) | Author |
| 2022-03-22 | Merge branch 'akpm' (patches from Andrew) | Linus Torvalds |
| 2022-03-22 | block/bfq-iosched.c: use "false" rather than "BLK_RW_ASYNC" | NeilBrown |
| 2022-03-21 | Merge tag 'for-5.18/block-2022-03-18' of git://git.kernel.dk/linux-block | Linus Torvalds |
| 2022-03-16 | block/bfq-iosched: Fix spelling mistake "tenative" -> "tentative" | Colin Ian King |
| 2022-03-08 | Revert "Revert "block, bfq: honor already-setup queue merges"" | Paolo Valente |
| 2022-03-05 | bfq: fix use-after-free in bfq_dispatch_request | Zhang Wensheng |
| 2022-02-18 | block, bfq: cleanup bfq_bfqq_to_bfqg() | Yu Kuai |
| 2022-02-17 | block/wbt: fix negative inflight counter when remove scsi device | Laibin Qiu |
| 2021-11-29 | block: simplify ioc_lookup_icq | Christoph Hellwig |
| 2021-11-29 | block: move the remaining elv.icq handling to the I/O scheduler | Christoph Hellwig |
| 2021-11-29 | block: move blk_mq_sched_assign_ioc to blk-ioc.c | Christoph Hellwig |
| 2021-11-29 | bfq: use bfq_bic_lookup in bfq_limit_depth | Christoph Hellwig |
| 2021-11-29 | bfq: simplify bfq_bic_lookup | Christoph Hellwig |
| 2021-11-29 | bfq: Do not let waker requests skip proper accounting | Jan Kara |
| 2021-11-29 | bfq: Log waker detections | Jan Kara |
| 2021-11-29 | bfq: Limit waker detection in time | Jan Kara |
| 2021-11-29 | bfq: Limit number of requests consumed by each cgroup | Jan Kara |
| 2021-11-29 | bfq: Store full bitmap depth in bfq_data | Jan Kara |
| 2021-11-29 | bfq: Track number of allocated requests in bfq_entity | Jan Kara |
| 2021-11-29 | block: move io_context creation into where it's needed | Jens Axboe |
| 2021-10-18 | blk-mq: Stop using pointers for blk_mq_tags bitmap tags | John Garry |
| 2021-10-18 | block: move elevator.h to block/ | Christoph Hellwig |
| 2021-09-28 | Revert "block, bfq: honor already-setup queue merges" | Jens Axboe |
| 2021-09-02 | block, bfq: honor already-setup queue merges | Paolo Valente |
| 2021-08-23 | block: add an explicit ->disk backpointer to the request_queue | Christoph Hellwig |
| 2021-08-18 | block: fix default IO priority handling | Damien Le Moal |
| 2021-08-18 | block: Introduce IOPRIO_NR_LEVELS | Damien Le Moal |
| 2021-08-18 | block: bfq: fix bfq_set_next_ioprio_data() | Damien Le Moal |
| 2021-08-09 | block: return ELEVATOR_DISCARD_MERGE if possible | Ming Lei |
| 2021-08-09 | block: move the bdi from the request_queue to the gendisk | Christoph Hellwig |
| 2021-06-24 | blk: Fix lock inversion between ioc lock and bfqd lock | Jan Kara |
| 2021-06-24 | bfq: Remove merged request already in bfq_requests_merged() | Jan Kara |
| 2021-06-21 | block, bfq: reset waker pointer with shared queues | Paolo Valente |
| 2021-06-21 | block, bfq: check waker only for queues with no in-flight I/O | Paolo Valente |
| 2021-06-21 | block, bfq: avoid delayed merge of async queues | Paolo Valente |
| 2021-06-21 | block, bfq: boost throughput by extending queue-merging times | Pietro Pedroni |
| 2021-06-21 | block, bfq: consider also creation time in delayed stable merge | Paolo Valente |
| 2021-06-21 | block, bfq: fix delayed stable merge check | Luca Mariotti |
| 2021-06-21 | block, bfq: let also stably merged queues enjoy weight raising | Paolo Valente |