Skip to content
Snippets Groups Projects
Select Git revision
21 results Searching

mls

Blame
    • Stephen Smalley's avatar
      025b7df2
      sepolicy: Clean up mls constraints. · 025b7df2
      Stephen Smalley authored
      
      Require equivalence for all write operations.  We were already
      doing this for app_data_file as a result of restricting open
      rather than read/write, so this makes the model consistent across
      all objects and operations.  It also addresses the scenario where
      we have mixed usage of levelFrom=all and levelFrom=user for
      different apps on the same device where the dominated-by (domby)
      relation may not be sufficiently restrictive.
      
      Drop the System V IPC constraints since System V IPC is never allowed
      by TE and thus these constraints are dead policy.
      
      Change-Id: Ic06a35030c086e3978c02d501c380889af8d21e0
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      025b7df2
      History
      sepolicy: Clean up mls constraints.
      Stephen Smalley authored
      
      Require equivalence for all write operations.  We were already
      doing this for app_data_file as a result of restricting open
      rather than read/write, so this makes the model consistent across
      all objects and operations.  It also addresses the scenario where
      we have mixed usage of levelFrom=all and levelFrom=user for
      different apps on the same device where the dominated-by (domby)
      relation may not be sufficiently restrictive.
      
      Drop the System V IPC constraints since System V IPC is never allowed
      by TE and thus these constraints are dead policy.
      
      Change-Id: Ic06a35030c086e3978c02d501c380889af8d21e0
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
    larson.py 2.42 KiB
    import matplotlib.pyplot as plt
    import multiprocessing
    import numpy as np
    import os
    import re
    
    from benchmark import Benchmark
    
    throughput_re = re.compile("^Throughput =\s*(?P<throughput>\d+) operations per second.$")
    
    class Benchmark_Larson( Benchmark ):
        def __init__(self):
            self.name = "larson"
            self.descrition = """This benchmark is courtesy of Paul Larson at Microsoft
                                 Research. It simulates a server: each thread allocates
                                 and deallocates objects, and then transfers some objects
                                 (randomly selected) to other threads to be freed."""
    
            self.cmd = "build/larson{binary_suffix} 1 8 {maxsize} 1000 10000 1 {threads}"
    
            self.args = {
                            "maxsize" : [8, 32, 64, 128, 256, 512, 1024],
                            "threads" : range(1, multiprocessing.cpu_count() * 2 + 1)
                        }
    
            self.requirements = ["build/larson"]
            super().__init__()
    
        def process_stdout(self, result, stdout, verbose):
            for l in stdout.splitlines():
                res = throughput_re.match(l)
                if res:
                    result["throughput"] = int(res.group("throughput"))
                    return
            print(stdout)
            print("no match")
    
        def summary(self, sd=None):
            # Speedup thrash
            args = self.results["args"]
            nthreads = args["threads"]
            targets = self.results["targets"]
    
            sd = sd or ""
    
            for arg in args:
                loose_arg = [a for a in args if a != arg][0]
                for arg_value in args[arg]:
                    for target in targets:
                        y_vals = []
                        for perm in self.iterate_args_fixed({arg : arg_value}, args=args):
                            d = [m["throughput"] for m in self.results[target][perm]]
                            y_vals.append(np.mean(d))
                        x_vals = list(range(1, len(y_vals) + 1))
                        plt.plot(x_vals, y_vals, marker='.', linestyle='-',
                            label=target, color=targets[target]["color"])
                    plt.legend()
                    plt.xticks(x_vals, args[loose_arg])
                    plt.xlabel(loose_arg)
                    plt.ylabel("OPS/s")
                    plt.title("Larson: " + arg + " " + str(arg_value))
                    plt.savefig(os.path.join(sd, ".".join([self.name, arg, str(arg_value), "png"])))
                    plt.clf()
    
    
    larson = Benchmark_Larson()