wiki:PerformanceData

Version 4 (modified by Mei, 12 years ago) (diff)

--

Table of Contents

  1. daisychain
  2. haystack

Performance data

We have gathered performance data of two types of ABAC scenario. The first is the daisychaining of a large answer proof from a similarly sized ruleset. The second is the searching of a proof from a noisy ruleset.

daisychain

Many cascading Likes-rules and their matching principal credentials are generated:

John0.likes <- John0
John1.likes <- John0
John2.likes <- John1
John3.likes <- John2
..
JohnMAX.likes <- JohnMAX-1

Following graph shows the the time needed to load both attribute credentials and principal certificates ((2*MAX)+2) into the YAP prolog db. The Y axis is the total time in milliseconds. The X axis is the number of credentials that are in the YAP backend db.

source:/examples/scaling_tests/plotting/JPEGS/likes_load.jpeg

A valid query, JohnMAX.likes<-?-John0 , is issued multiple times. The first query's time is collected and then subsequent 100 queries are collected and an average is taken. Next graph shows these lines. The X axis is the query time in microseconds and the Y axis is number of credentials in the YAP backend db.

source:/examples/scaling_tests/plotting/JPEGS/likes_goodquery.jpeg

An invalid query in the form of John0.likes<-?-JohnMAX is issued multiple times. The first query's time is collected and then subsequent 100 queries are collected and an average is taken. Next graph shows these lines. The X axis is the query time in microseconds and the Y axis is number of credentials in the YAP backend db.

source:/examples/scaling_tests/plotting/JPEGS/likes_badquery.jpeg

haystack

The core credential setup is borrowed from the Ralphs' fruitprice and shopper's eating preference RT2 example,

Mary.what2eat <- Ralphs.fruitprice(P:[..2.00])
Bob.what2eat <- Ralphs.fruitprice(P:[1.00 .. 5.00])
Ralphs.fruitprice(1.50) <- 'apple'
Ralphs.fruitprice(1.50) <- 'kiwi'
Ralphs.fruitprice(2.50) <- 'black rasberry'
Ralphs.fruitprice(0.50) <- 'navel orange'

Noises are introduced by adding the rules about bananas and Johns.

Ralphs.fruitprice(1.00) <- 'banana1'
Ralphs.fruitprice(2.00) <- 'banana2'
..
Ralphs.fruitprice(MAX.00) <- 'bananaMAX'

and,

John1.what2eat <- Ralphs.fruitprice(P:[1.00 .. 5.00])
John2.what2eat <- Ralphs.fruitprice(P:[1.00 .. 5.00])
..
JohnMAX.what2eat <- Ralphs.fruitprice(P:[1.00 .. 5.00])

Following graph shows the the time needed to load both attribute credentials and principal certificates ((3*MAX)+9) into the YAP prolog db. The Y axis is the total time in milliseconds. The X axis is the number of credentials that are in the YAP backend db.

source:/examples/scaling_tests/plotting/JPEGS/fruit_load.jpeg

A valid query, Mary.what2eat<-?-'navel orange', is issued multiple times. The returning answer proof is,

Mary.what2eat <- pRalphs.fruitprice(P:[..2.00])
Ralphs.fruitprice(0.50) <- 'navel orange'

The first query's time is collected and the subsequent 100 queries are collected and averaged. Next graph shows these lines. The X axis is the query time in microseconds and the Y axis is number of credentials in the YAP backend db.

source:/examples/scaling_tests/plotting/JPEGS/fruit_goodquery.jpeg

An invalid query in the form of Bob.what2eat<-?-'navel orange' is issued multiple times. The first query's time is collected and then subsequent 100 queries are collected and averaged. Next graph shows these lines. The X axis is the query time in microseconds and the Y axis is number of credentials in the YAP backend db.

source:/examples/scaling_tests/plotting/JPEGS/fruit_badquery.jpeg