.map_flags = BPF_F_NO_PREALLOC,
 };
 
+struct bpf_map_def SEC("maps") array_map = {
+       .type = BPF_MAP_TYPE_ARRAY,
+       .key_size = sizeof(u32),
+       .value_size = sizeof(long),
+       .max_entries = MAX_ENTRIES,
+};
+
 SEC("kprobe/sys_getuid")
 int stress_hmap(struct pt_regs *ctx)
 {
        return 0;
 }
 
+SEC("kprobe/sys_getpgid")
+int stress_hash_map_lookup(struct pt_regs *ctx)
+{
+       u32 key = 1, i;
+       long *value;
+
+#pragma clang loop unroll(full)
+       for (i = 0; i < 64; ++i)
+               value = bpf_map_lookup_elem(&hash_map, &key);
+
+       return 0;
+}
+
+SEC("kprobe/sys_getpgrp")
+int stress_array_map_lookup(struct pt_regs *ctx)
+{
+       u32 key = 1, i;
+       long *value;
+
+#pragma clang loop unroll(full)
+       for (i = 0; i < 64; ++i)
+               value = bpf_map_lookup_elem(&array_map, &key);
+
+       return 0;
+}
+
 char _license[] SEC("license") = "GPL";
 u32 _version SEC("version") = LINUX_VERSION_CODE;
 
 #define LRU_HASH_PREALLOC      (1 << 4)
 #define PERCPU_LRU_HASH_PREALLOC       (1 << 5)
 #define LPM_KMALLOC            (1 << 6)
+#define HASH_LOOKUP            (1 << 7)
+#define ARRAY_LOOKUP           (1 << 8)
 
 static int test_flags = ~0;
 
               cpu, MAX_CNT * 1000000000ll / (time_get_ns() - start_time));
 }
 
+static void test_hash_lookup(int cpu)
+{
+       __u64 start_time;
+       int i;
+
+       start_time = time_get_ns();
+       for (i = 0; i < MAX_CNT; i++)
+               syscall(__NR_getpgid, 0);
+       printf("%d:hash_lookup %lld lookups per sec\n",
+              cpu, MAX_CNT * 1000000000ll * 64 / (time_get_ns() - start_time));
+}
+
+static void test_array_lookup(int cpu)
+{
+       __u64 start_time;
+       int i;
+
+       start_time = time_get_ns();
+       for (i = 0; i < MAX_CNT; i++)
+               syscall(__NR_getpgrp, 0);
+       printf("%d:array_lookup %lld lookups per sec\n",
+              cpu, MAX_CNT * 1000000000ll * 64 / (time_get_ns() - start_time));
+}
+
 static void loop(int cpu)
 {
        cpu_set_t cpuset;
 
        if (test_flags & LPM_KMALLOC)
                test_lpm_kmalloc(cpu);
+
+       if (test_flags & HASH_LOOKUP)
+               test_hash_lookup(cpu);
+
+       if (test_flags & ARRAY_LOOKUP)
+               test_array_lookup(cpu);
 }
 
 static void run_perf_test(int tasks)