-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
154 lines (138 loc) · 7.24 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>VyPR - Performance Analysis for Python Programs</title>
<!-- Bootstrap -->
<link href="static/css/bootstrap.min.css" rel="stylesheet" />
<link href="static/css/custom.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="static/js/bootstrap.min.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<nav class="navbar navbar">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="index.html"><img src="static/images/vypr_logo.jpeg" height="50px" margin-top="-10px" /></a>
</div>
<!-- nav links -->
<div class="collapse navbar-collapse" id="navbar">
<ul class="nav navbar-nav">
<!--<li><a href="tutorial.html">Tutorial</a></li>-->
<li><a href="use-vypr.html">Get Started with VyPR</a></li>
<li><a href="publications.html">Research</a></li>
<li><a href="team.html">Team</a></li>
<li><a href="licence.html">Licence</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<div class="container">
<!--<p>Our ultimate goal is to automate performance analysis by having engineers formalise their performance requirements in a temporal logic, and automate explanation of any violations.</p>
<p><b>VyPR is a step towards such automation.</b> It allows engineers to write low-level properties over state and time, locally inside functions, and check whether their service holds such properties while the service is still running. Engineers write properties in our specification language, Control-Flow Temporal Logic (CFTL), using VyPR's Python binding, PyCFTL.</p>!-->
<!--<div class="navbar-right">
<img alt="Brand" src="static/logos/cern-logo.png" height="80px">
</div>
<div class="navbar-right">
<img alt="Brand" src="static/logos/manchester-logo.png" height="80px">
</div>-->
<h2>Welcome!</h2>
<div class="container-fluid" style="margin-top:50px;">
<div class="row">
<div class="col-sm-8">
<p>VyPR is a prototype framework that allows developers to analyse the performance of their Python programs by writing queries
and analysing the results.</p>
<p>Originally developed at <a href="http://home.cern/">CERN</a>, at the <a href="http://cms.cern">CMS Experiment</a>, and <a
href="http://manchester.ac.uk">The University of Manchester</a>.</em></p>
<p>The research that led to VyPR is now being extended at the <a href="https://wwwen.uni.lu/snt">Interdisciplinary Centre for Security,
Reliability and Trust (SnT)</a> in
Luxembourg.</p>
<p>At CERN, the project was led by <a href="http://joshhdawes.github.io/" target="new">Joshua Dawes</a>, who still leads R&D that uses the
research at SnT.</p>
<p>All code from the VyPR project is available in <a class="btn btn-success"
href="https://github.com/pyvypr/">VyPR's GitHub organisation</a></p>
</div>
<div class="col-sm-4">
<center>
<p><a href="http://pyvypr.github.io/home/rv2020-tutorial/" class="btn btn-success" style="font-size: 20px;">Explore the VyPR ecosystem</a></p>
<p>Docker image containing a sample program monitored by VyPR, and instances of our analysis tools.</p>
<p>Tested on macOS Catalina and CentOS Linux 7.</p>
</center>
</div>
</div>
</div>
<h2>Using VyPR is easy (to make a start, see <a href="use-vypr.html">here</a>):</h2>
<div class="container-fluid" style="margin-top:50px;">
<div class="row">
<div class="col-sm-4">
<div class="panel panel-success">
<div class="panel-heading"><b>1 - Querying</b></div>
<div class="panel-body">
<p>Write queries over the performance of a part of your program using VyPR's library.</p>
<p>Queries written for VyPR take the form of properties that a run of that part of the program should hold.</p>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="panel panel-info">
<div class="panel-heading"><b>2 - Instrumentation and Monitoring</b></div>
<div class="panel-body">
<p>Before runtime, VyPR automatically determines where in your program to take data to check your queries.</p>
<p>At runtime, VyPR resolves your queries in the background by taking measurements.</p>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="panel panel-info">
<div class="panel-heading"><b>3 - Analysis</b></div>
<div class="panel-body">
<p>You can use one of VyPR's analysis tools to see when, where and how the properties defined by your queries were satisfied (or not) by a run of your program.</p>
<p>We provide two analysis tools:</p>
<p><a class="btn btn-success" href="https://pyvypr.github.io/home/analysis-environment/index.html">Web-based Analysis Environment</a></p>
<p><a class="btn btn-success" href="https://pyvypr.github.io/home/analysis-library/index.html">Python Analysis Library</a></p>
</div>
</div>
</div>
</div>
</div>
<!--<h2>PyCFTL</h2>
<p>A specification language for expressing constraints over state and time during runs of individual functions in a system. It's designed to allow engineers to write specifications about their software by thinking <em>directly</em> about their code, rather than in abstraction.</p>
<div class="row">
<div class="col-sm-6">
<div class="panel panel-success">
<div class="panel-heading"><b>Natural Language Specification</b></div>
<div class="panel-body">
<h4><i>"Every time <b>x</b> changes, the next call to <b>write</b> should take no more than a second."</i></h4>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="panel panel-success">
<div class="panel-heading"><b>Python code using the PyCFTL library</b></div>
<div class="panel-body">
<pre>Forall(q = changes('x')).\
Check(
lambda q : (
q.next_call('write').duration()._in([0, 1])
)
)</pre>
</div>
</div>
</div>
</div>
</div>-->
<div class="footer-copyright text-center py-3">
<p>(C) Copyright 2020 CERN and University of Manchester.</p>
</div>
</body>
</html>