The above output shows a bimodal distribution, where the largest mode of
800 I/O was between 128 and 255 Kbytes in size.
-See the source: [bitehist.c](examples/tracing/bitehist.c) and
-[bitehist.py](examples/tracing/bitehist.py). What this traces, what this stores, and how
-the data is presented, can be entirely customized. This shows only some of
-many possible capabilities.
+See the source: [bitehist.py](examples/tracing/bitehist.py). What this traces,
+what this stores, and how the data is presented, can be entirely customized.
+This shows only some of many possible capabilities.
## Installing
Examples:
-- examples/tracing/[bitehist.py](examples/tracing/bitehist.py) examples/tracing/[bitehist.c](examples/tracing/bitehist.c): Block I/O size histogram. [Examples](examples/tracing/bitehist_example.txt).
+- examples/tracing/[bitehist.py](examples/tracing/bitehist.py): Block I/O size histogram. [Examples](examples/tracing/bitehist_example.txt).
- examples/tracing/[disksnoop.py](examples/tracing/disksnoop.py) examples/tracing/[disksnoop.c](examples/tracing/disksnoop.c): Trace block device I/O latency. [Examples](examples/tracing/disksnoop_example.txt).
- examples/[hello_world.py](examples/hello_world.py): Prints "Hello, World!" for new processes.
- examples/tracing/[tcpv4connect.py](examples/tracing/tcpv4connect.py): Trace TCP IPv4 active connections. [Examples](examples/tracing/tcpv4connect_example.txt).
+++ /dev/null
-/*
- * bitehist.c Block I/O size histogram.
- * For Linux, uses BCC, eBPF. See .py file.
- *
- * Copyright (c) 2013-2015 PLUMgrid, http://plumgrid.com
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 15-Aug-2015 Brendan Gregg Created this.
- */
-
-#include <uapi/linux/ptrace.h>
-#include <linux/blkdev.h>
-
-BPF_HISTOGRAM(dist);
-
-int kprobe__blk_account_io_completion(struct pt_regs *ctx, struct request *req)
-{
- dist.increment(bpf_log2l(req->__data_len / 1024));
- return 0;
-}
#!/usr/bin/python
#
# bitehist.py Block I/O size histogram.
-# For Linux, uses BCC, eBPF. See .c file.
+# For Linux, uses BCC, eBPF. Embedded C.
#
# Written as a basic example of using a histogram to show a distribution.
#
from time import sleep
# load BPF program
-b = BPF(src_file = "bitehist.c")
+b = BPF(text="""
+#include <uapi/linux/ptrace.h>
+#include <linux/blkdev.h>
+
+BPF_HISTOGRAM(dist);
+
+int kprobe__blk_account_io_completion(struct pt_regs *ctx, struct request *req)
+{
+ dist.increment(bpf_log2l(req->__data_len / 1024));
+ return 0;
+}
+""")
# header
print("Tracing... Hit Ctrl-C to end.")