Skip to content

Commit 02ae823

Browse files
committed
selectively rescale crypto apps on Xeon processor
1 parent 543d68b commit 02ae823

File tree

19 files changed

+624
-362
lines changed

19 files changed

+624
-362
lines changed

beta/bld-dir/args-bld

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,28 @@
1010
-exp exp.yaml
1111
-topo topo.yaml
1212
-useJSON false
13-
-switchports 16
13+
-switchports 64
1414
-srccores 8
1515
-sslcores 8
1616
-eudcores 2
1717
-srcCPU Intel-i7-1185G7E
18-
-srcCPUBw 10
19-
-pvtNetBw 10
20-
-pubNetBw 10
18+
-srcCPUBw 100
19+
-pvtNetBw 100
20+
-pubNetBw 100
2121
-pvtSwitch ACME-Generic-Slow-Switch
22-
-pubSwitch ACME-Generic-Fast-Switch
23-
-pvtSwitchBw 10
24-
-pubSwitchBw 10
22+
-pubSwitch ACME-Generic-Slow-Switch
23+
-pvtSwitchBw 100
24+
-pubSwitchBw 100
2525
-pvtRtr ACME-Generic-Slow-Router
2626
-pubRtr ACME-Generic-Slow-Router
27-
-pvtRtrBw 10
28-
-pubRtrBw 10
29-
-sslCPU Intel-Xeon-w-1350P
30-
-sslCPUBw 10
27+
-pvtRtrBw 100
28+
-pubRtrBw 100
3129
-pcktlen 128
3230
-pcktburst 10
33-
-pcktMu 0.001
34-
-euds 10
31+
-pcktMu 0
32+
-euds 100
3533
-eudCPU Intel-i3-4130
36-
-eudCPUBw 10
37-
-cryptoalg des
38-
-keylength 1024
39-
-sslsrvr True
34+
-eudCPUBw 100
35+
-cryptoalg aes
36+
-keylength 256
37+
-sslsrvr False

beta/bld-dir/bld.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ func main() {
331331
// The method code must be defined for the class of the destination function, and
332332
// indicates particular methods to be invoked in the processing of this message
333333
eudCmpPtn.AddEdge(decryptOutFunc.Label, processFunc.Label, "plaintext", "processOp", &epCPInit.Msgs)
334-
eudCmpPtn.AddEdge(processFunc.Label, encryptRtnFunc.Label, "plaintext", "processOp", &epCPInit.Msgs)
334+
eudCmpPtn.AddEdge(processFunc.Label, encryptRtnFunc.Label, "plaintext", "encryptOp", &epCPInit.Msgs)
335335

336336
// each of the CmpPtn's functions gets a cfg dictionary whose structure is defined
337337
// by the function's class. Here we create and populate those structures, which
@@ -347,7 +347,7 @@ func main() {
347347
// We will later check this validity as it depends also on the mapping of functions to processors
348348
// that has not yet been specified.
349349

350-
decryptOutStr := createCryptoPcktCfg("decrypt", cryptoAlg, keyLength, "plaintext")
350+
decryptOutStr := createCryptoPcktCfg("decrypt", cryptoAlg, keyLength, "plaintext", false)
351351
epCPInit.AddCfg(eudCmpPtn, decryptOutFunc, decryptOutStr)
352352

353353
// the 'processFunc' function in an EUD CmpPtn models the computational delay of doing something
@@ -357,13 +357,13 @@ func main() {
357357
tlb := map[string]string{"processOp":"finish"}
358358
tcp := map[string]string{"processOp": encryptPerf.Name}
359359

360-
processStr := createProcessPcktCfg(rtd, tcd, tcp, tlb)
360+
processStr := createProcessPcktCfg(rtd, tcd, tcp, tlb, false)
361361

362362
epCPInit.AddCfg(eudCmpPtn, processFunc, processStr)
363363

364364
// the 'encryptRtn' function in an EUD CmpPtn models the delay of encrypting
365365
// a response to the message sent to the EUD
366-
encryptRtnStr := createCryptoPcktCfg("encrypt", cryptoAlg, keyLength, "encryptext")
366+
encryptRtnStr := createCryptoPcktCfg("encrypt", cryptoAlg, keyLength, "encryptext", false)
367367
epCPInit.AddCfg(eudCmpPtn, encryptRtnFunc, encryptRtnStr)
368368

369369
// The overall model creates a CmpPtn for each EUD, named
@@ -396,9 +396,9 @@ func main() {
396396
// an external edge from encryptOut to the EUD. Note that a different method (AddExtEdge)
397397
// is used to specify the cross-CmpPtn connections
398398
cpyCP.AddExtEdge(cpyCP.Name, encryptPerf.Name, encryptRtnFunc.Label, decryptRtnFunc.Label,
399-
"encryptext", "processOp", &epCPInit.Msgs, &epCPSrcInit.Msgs)
399+
"encryptext", "decryptOp", &epCPInit.Msgs, &epCPSrcInit.Msgs)
400400
encryptPerf.AddExtEdge(encryptPerf.Name, cpyCP.Name, encryptOutFunc.Label, decryptOutFunc.Label,
401-
"encryptext", "processOp", &epCPSrcInit.Msgs, &epCPInit.Msgs)
401+
"encryptext", "decryptOp", &epCPSrcInit.Msgs, &epCPInit.Msgs)
402402

403403
// save the EUD CmpPtn in the output dictionary
404404
cpDict.AddCompPattern(cpyCP)
@@ -416,7 +416,7 @@ func main() {
416416

417417
// add edges to the packet source CmpPtn
418418
encryptPerf.AddEdge(srcFunc.Label, srcFunc.Label, "initiate", "generateOp", &epCPSrcInit.Msgs)
419-
encryptPerf.AddEdge(srcFunc.Label, encryptOutFunc.Label, "plaintext", "processOp", &epCPSrcInit.Msgs)
419+
encryptPerf.AddEdge(srcFunc.Label, encryptOutFunc.Label, "plaintext", "encryptOp", &epCPSrcInit.Msgs)
420420
encryptPerf.AddEdge(decryptRtnFunc.Label, srcFunc.Label, "finishtext", "completeOp", &epCPSrcInit.Msgs)
421421
encryptPerf.AddEdge(srcFunc.Label, finishFunc.Label, "finishtext", "finishOp", &epCPSrcInit.Msgs)
422422

@@ -425,7 +425,7 @@ func main() {
425425
srcCfg := pces.ClassCreateCycleDstCfg()
426426

427427
// create the routing and timing code maps
428-
rtd = map[string]string{"generateOp":"plaintext", "completeOp":"finishtext"}
428+
rtd = map[string]string{"generateOp":"plaintext", "completeOp": "finishtext"}
429429
tcd = map[string]string{"generateOp":"generateOp", "completeOp": "completeOp"}
430430

431431
// build out the cfg dictionary for the srcFunc
@@ -441,11 +441,11 @@ func main() {
441441
epCPSrcInit.AddCfg(encryptPerf, srcFunc, serialSrcCfg)
442442

443443
// put in parameters for encryptOutFunc
444-
encryptOutStr := createCryptoPcktCfg("encrypt", cryptoAlg, keyLength, "encryptext")
444+
encryptOutStr := createCryptoPcktCfg("encrypt", cryptoAlg, keyLength, "encryptext", archType=="SSL")
445445
epCPSrcInit.AddCfg(encryptPerf, encryptOutFunc, encryptOutStr)
446446

447447
// put in parameters for decryptRtnFunc
448-
decryptRtnStr := createCryptoPcktCfg("decrypt", cryptoAlg, keyLength, "finishtext")
448+
decryptRtnStr := createCryptoPcktCfg("decrypt", cryptoAlg, keyLength, "finishtext", archType=="SSL")
449449
epCPSrcInit.AddCfg(encryptPerf, decryptRtnFunc, decryptRtnStr)
450450

451451
// make a minimalistic cfg for finish
@@ -745,7 +745,7 @@ func main() {
745745

746746
}
747747

748-
func createProcessPcktCfg(rt, tc, tcp, tlb map[string]string) string {
748+
func createProcessPcktCfg(rt, tc, tcp, tlb map[string]string, accl bool) string {
749749
cfg := pces.ClassCreateProcessPcktCfg()
750750

751751
for key, value := range rt {
@@ -764,6 +764,8 @@ func createProcessPcktCfg(rt, tc, tcp, tlb map[string]string) string {
764764
cfg.TgtLabel[key] = value
765765
}
766766

767+
cfg.Accl = accl
768+
767769
// serialize the class-dependent cfg structure
768770
serialCfg, err0 := cfg.Serialize(useYAML)
769771
if err0 != nil {
@@ -773,13 +775,13 @@ func createProcessPcktCfg(rt, tc, tcp, tlb map[string]string) string {
773775
}
774776

775777
// def createCryptoPckt("decrypt", cryptoAlg, keyLength, false)
776-
func createCryptoPcktCfg(cryptoOp, cryptoAlg, keyLength, msgType string) string {
778+
func createCryptoPcktCfg(cryptoOp, cryptoAlg, keyLength, msgType string, accl bool) string {
777779
cryptoVec := []string{cryptoOp, cryptoAlg, keyLength}
778780
opCode := strings.Join(cryptoVec,"-")
779-
rtd := map[string]string{"processOp": msgType }
780-
tcd := map[string]string{"processOp":opCode}
781+
rtd := map[string]string{"encryptOp": msgType, "decryptOp": msgType}
782+
tcd := map[string]string{"encryptOp":opCode, "decryptOp": opCode}
781783
empty := make(map[string]string)
782-
return createProcessPcktCfg(rtd, tcd, empty, empty)
784+
return createProcessPcktCfg(rtd, tcd, empty, empty, accl)
783785
}
784786

785787
func createFinishCfg() string {

beta/bld-dir/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module main
22

3-
go 1.22
3+
go 1.22.7
44

55
require (
66
github.com/iti/cmdline v0.1.1
7-
github.com/iti/mrnes v0.0.12
8-
github.com/iti/pces v0.0.9
7+
github.com/iti/mrnes v0.0.13
8+
github.com/iti/pces v0.0.11
99
)
1010

1111
require (

beta/bld-dir/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ github.com/iti/evt/evtq v0.1.4 h1:cLkfhqiCRUSeiDVN/YN2ZC2L1mznL9n5o9CFKt/pwkc=
66
github.com/iti/evt/evtq v0.1.4/go.mod h1:85Zm3A+dgRd72YV8DS2VoNExUCt3Ckq2GqYnI4oqlBY=
77
github.com/iti/evt/vrtime v0.1.5 h1:5d2O3ZGb9OruBkBxZ1PzyXBlHkAUmW27jz9fUXHc6MI=
88
github.com/iti/evt/vrtime v0.1.5/go.mod h1:NtgQQ20CSeaLxWNsAROKuHtAdeXNZ86Wg6ox2l5LtrU=
9-
github.com/iti/mrnes v0.0.12 h1:BYqJiHP/8s8wLhBziUzYP+AFTHuhgoqI6NfyDRjjWk0=
10-
github.com/iti/mrnes v0.0.12/go.mod h1:xRS3mAFK13TAPPJEBiBvJHBpPoM9zUtn722539JOGls=
11-
github.com/iti/pces v0.0.9 h1:58qZEnzdv5H6cOh3OJF5b7lAO0xrAdu0WOSFIpH8qv4=
12-
github.com/iti/pces v0.0.9/go.mod h1:yhK2EaHHUvdz7fuxorqA6D2Uvpaq8GnSyACYOhBOLPE=
9+
github.com/iti/mrnes v0.0.13 h1:r+iqkgblIgjvLmgzIaW6oNzU3l7E5Eunu07v9fKxIk4=
10+
github.com/iti/mrnes v0.0.13/go.mod h1:cFguMaOXLfIOljE+lKuTxXm4m6/N8Aml6YhObQ5NsnU=
11+
github.com/iti/pces v0.0.11 h1:+/foFvEOi6r5sNaQdJWcxlHM7ZprWK4pWJlITc0VXLM=
12+
github.com/iti/pces v0.0.11/go.mod h1:2mPmi47Z2qWjiHhI0C6+SkOiPSHNqjTahr7MBH/2XGU=
1313
github.com/iti/rngstream v0.2.2 h1:9cfSikwWPW1Yie+RjdJ23uUuMryLu+Ou38/TChYLPZ8=
1414
github.com/iti/rngstream v0.2.2/go.mod h1:sf9vdWtEjVW4dxOocgIqbivkNIrfcl10H8jEeeqFNnQ=
1515
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=

beta/db/args-cnvrt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
-db ./
22
-outputDir ../input
3+
-ssl 100.0

beta/db/cnvrtDesc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func cmdlineParams() *cmdline.CmdParser {
2121
// command line parameters are all about file and directory locations.
2222
cp := cmdline.NewCmdParser()
2323
cp.AddFlag(cmdline.StringFlag, "db", true) // directory where 'database' of csv models reside
24+
cp.AddFlag(cmdline.FloatFlag, "ssl", false)
2425
cp.AddFlag(cmdline.StringFlag, "outputDir", true) // directory where 'database' of csv models reside
2526
return cp
2627
}

beta/db/cnvrtExec.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/iti/cmdline"
77
"github.com/iti/pces"
88
"github.com/iti/mrnes"
9+
"golang.org/x/exp/slices"
910
"bufio"
1011
"path/filepath"
1112
"strconv"
@@ -18,11 +19,26 @@ func cmdlineParams() *cmdline.CmdParser {
1819
// command line parameters are all about file and directory locations.
1920
cp := cmdline.NewCmdParser()
2021
cp.AddFlag(cmdline.StringFlag, "db", true) // directory where 'database' of csv models reside
22+
cp.AddFlag(cmdline.FloatFlag, "ssl", false) // directory where 'database' of csv models reside
2123
cp.AddFlag(cmdline.StringFlag, "outputDir", false) // directory where 'database' of csv models reside
2224
return cp
2325
}
2426

27+
var action []string = []string{"encrypt", "decrypt"}
28+
var algs []string = []string{"3des","rc6","aes","des"}
29+
30+
func cryptoOp(op string) bool {
31+
pieces := strings.Split(op, "-")
32+
if len(pieces) != 3 {
33+
return false
34+
}
35+
if !slices.Contains(action,pieces[0]) || !slices.Contains(algs, pieces[1]) {
36+
return false
37+
}
38+
return true
39+
}
2540
// main gives the entry point
41+
2642
func main() {
2743
// define the command line parameters
2844
cp := cmdlineParams()
@@ -33,6 +49,13 @@ func main() {
3349
// string for directory with source .csv files
3450
dbDir := cp.GetVar("db").(string)
3551

52+
var transSSL bool = false
53+
var sslScale float64 = 1.0
54+
if cp.IsLoaded("ssl") {
55+
transSSL = true
56+
sslScale = cp.GetVar("ssl").(float64)
57+
}
58+
3659
timingDir := filepath.Join(dbDir,"timing")
3760
funcXDir := filepath.Join(timingDir,"funcExec")
3861
devXDir := filepath.Join(timingDir,"devExec")
@@ -55,6 +78,8 @@ func main() {
5578
panic(err)
5679
}
5780

81+
var transOp bool = false
82+
5883
for _, fXFile := range funcXFiles {
5984
// get the base file name
6085
fullBase := filepath.Base(fXFile)
@@ -119,6 +144,7 @@ func main() {
119144
// is this the first appearance of a new operation?
120145
if len(fields[0]) > 0 && opName != fields[0] {
121146
opName = fields[0]
147+
transOp = cryptoOp(opName)
122148

123149
// new ops require an update devName
124150
if len(fields[1]) == 0 {
@@ -151,7 +177,12 @@ func main() {
151177
// scale ex (microseconds) to seconds
152178
ex = ex/1e+6
153179
// add timing to list
154-
fel.AddTiming(opName, fields[3], devName, ps, ex)
180+
181+
if transOp && transSSL && strings.Contains(devName,"Xeon") {
182+
fel.AddTiming(opName, fields[3], devName, ps, ex/sslScale)
183+
} else {
184+
fel.AddTiming(opName, fields[3], devName, ps, ex)
185+
}
155186
}
156187
// write the timing description out to file
157188
// replace the .csv extention of csvFile to .yaml or .json

beta/db/go.mod

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
module main
22

3-
go 1.22.0
4-
5-
toolchain go1.23.1
3+
go 1.22.7
64

75
require (
86
github.com/iti/cmdline v0.1.1
9-
github.com/iti/mrnes v0.0.12
10-
github.com/iti/pces v0.0.9
11-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0
7+
github.com/iti/mrnes v0.0.13
8+
github.com/iti/pces v0.0.11
9+
golang.org/x/exp v0.0.0-20241004190924-225e2abe05e6
1210
)
1311

1412
require (

beta/db/go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ github.com/iti/evt/evtq v0.1.4 h1:cLkfhqiCRUSeiDVN/YN2ZC2L1mznL9n5o9CFKt/pwkc=
66
github.com/iti/evt/evtq v0.1.4/go.mod h1:85Zm3A+dgRd72YV8DS2VoNExUCt3Ckq2GqYnI4oqlBY=
77
github.com/iti/evt/vrtime v0.1.5 h1:5d2O3ZGb9OruBkBxZ1PzyXBlHkAUmW27jz9fUXHc6MI=
88
github.com/iti/evt/vrtime v0.1.5/go.mod h1:NtgQQ20CSeaLxWNsAROKuHtAdeXNZ86Wg6ox2l5LtrU=
9-
github.com/iti/mrnes v0.0.12 h1:BYqJiHP/8s8wLhBziUzYP+AFTHuhgoqI6NfyDRjjWk0=
10-
github.com/iti/mrnes v0.0.12/go.mod h1:xRS3mAFK13TAPPJEBiBvJHBpPoM9zUtn722539JOGls=
11-
github.com/iti/pces v0.0.9 h1:58qZEnzdv5H6cOh3OJF5b7lAO0xrAdu0WOSFIpH8qv4=
12-
github.com/iti/pces v0.0.9/go.mod h1:yhK2EaHHUvdz7fuxorqA6D2Uvpaq8GnSyACYOhBOLPE=
9+
github.com/iti/mrnes v0.0.13 h1:r+iqkgblIgjvLmgzIaW6oNzU3l7E5Eunu07v9fKxIk4=
10+
github.com/iti/mrnes v0.0.13/go.mod h1:cFguMaOXLfIOljE+lKuTxXm4m6/N8Aml6YhObQ5NsnU=
11+
github.com/iti/pces v0.0.11 h1:+/foFvEOi6r5sNaQdJWcxlHM7ZprWK4pWJlITc0VXLM=
12+
github.com/iti/pces v0.0.11/go.mod h1:2mPmi47Z2qWjiHhI0C6+SkOiPSHNqjTahr7MBH/2XGU=
1313
github.com/iti/rngstream v0.2.2 h1:9cfSikwWPW1Yie+RjdJ23uUuMryLu+Ou38/TChYLPZ8=
1414
github.com/iti/rngstream v0.2.2/go.mod h1:sf9vdWtEjVW4dxOocgIqbivkNIrfcl10H8jEeeqFNnQ=
15-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
16-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
15+
golang.org/x/exp v0.0.0-20241004190924-225e2abe05e6 h1:1wqE9dj9NpSm04INVsJhhEUzhuDVjbcyKH91sVyPATw=
16+
golang.org/x/exp v0.0.0-20241004190924-225e2abe05e6/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8=
1717
gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ=
1818
gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo=
1919
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=

0 commit comments

Comments
 (0)