Skip to content

Commit

Permalink
fix timeteller err
Browse files Browse the repository at this point in the history
  • Loading branch information
DX990307 committed Jul 4, 2023
1 parent dc9a92d commit ca1d2ed
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 27 deletions.
63 changes: 36 additions & 27 deletions analysis/perf_analyzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,25 @@ type PerfAnalyzer struct {
}

// RegisterEngine registers the engine that is used in the simulation.
func (p *PerfAnalyzer) RegisterEngine(e sim.Engine) {
p.engine = e
func (b *PerfAnalyzer) RegisterEngine(e sim.Engine) {
b.engine = e
}

// RegisterComponent register a component to be monitored.
func (p *PerfAnalyzer) RegisterComponent(c sim.Component) {
p.registerComponentBuffers(c)
p.registerComponentPorts(c)
func (b *PerfAnalyzer) RegisterComponent(c sim.Component) {
b.registerComponentBuffers(c)
b.registerComponentPorts(c)
}

func (p *PerfAnalyzer) registerComponentBuffers(c sim.Component) {
p.registerComponentOrPortBuffers(c)
func (b *PerfAnalyzer) registerComponentBuffers(c sim.Component) {
b.registerComponentOrPortBuffers(c)

for _, port := range c.Ports() {
p.registerComponentOrPortBuffers(port)
b.registerComponentOrPortBuffers(port)
}
}

func (p *PerfAnalyzer) registerComponentOrPortBuffers(c any) {
func (b *PerfAnalyzer) registerComponentOrPortBuffers(c any) {
v := reflect.ValueOf(c).Elem()
for i := 0; i < v.NumField(); i++ {
field := v.Field(i)
Expand All @@ -64,41 +64,41 @@ func (p *PerfAnalyzer) registerComponentOrPortBuffers(c any) {
unsafe.Pointer(field.UnsafeAddr()),
).Elem().Interface().(sim.Buffer)

p.RegisterBuffer(fieldRef)
b.RegisterBuffer(fieldRef)
}
}
}

func (p *PerfAnalyzer) RegisterBuffer(buf sim.Buffer) {
func (b *PerfAnalyzer) RegisterBuffer(buf sim.Buffer) {
bufferAnalyzerBuilder := MakeBufferAnalyzerBuilder().
WithTimeTeller(p.engine).
WithPerfLogger(p).
WithTimeTeller(b.engine).
WithPerfLogger(b).
WithBuffer(buf)

if p.usePeriod {
bufferAnalyzerBuilder.WithPeriod(p.period)
if b.usePeriod {
bufferAnalyzerBuilder.WithPeriod(b.period)
}

bufferAnalyzer := bufferAnalyzerBuilder.Build()

buf.AcceptHook(bufferAnalyzer)
}

func (p *PerfAnalyzer) registerComponentPorts(c sim.Component) {
func (b *PerfAnalyzer) registerComponentPorts(c sim.Component) {
for _, port := range c.Ports() {
p.RegisterPort(port)
b.RegisterPort(port)
}
}

// RegisterPort registers a port to be monitored.
func (p *PerfAnalyzer) RegisterPort(port sim.Port) {
func (b *PerfAnalyzer) RegisterPort(port sim.Port) {
portAnalyzerBuilder := MakePortAnalyzerBuilder().
WithTimeTeller(p.engine).
WithPerfLogger(p).
WithTimeTeller(b.engine).
WithPerfLogger(b).
WithPort(port)

if p.usePeriod {
portAnalyzerBuilder.WithPeriod(p.period)
if b.usePeriod {
portAnalyzerBuilder.WithPeriod(b.period)
}

portAnalyzer := portAnalyzerBuilder.Build()
Expand All @@ -108,8 +108,8 @@ func (p *PerfAnalyzer) RegisterPort(port sim.Port) {

// AddDataEntry adds a data entry to the database. It directly writes into the
// CSV file.
func (p *PerfAnalyzer) AddDataEntry(entry PerfAnalyzerEntry) {
p.backend.AddDataEntry(entry)
func (b *PerfAnalyzer) AddDataEntry(entry PerfAnalyzerEntry) {
b.backend.AddDataEntry(entry)
}

// PerfAnalyzerBuilder is a builder that can build a PerfAnalyzer.
Expand All @@ -118,6 +118,7 @@ type PerfAnalyzerBuilder struct {
period sim.VTimeInSec
backendType string
dbFilename string
engine sim.Engine
}

// MakePerfAnalyzerBuilder creates a new PerfAnalyzerBuilder.
Expand Down Expand Up @@ -146,11 +147,18 @@ func (b PerfAnalyzerBuilder) WithSQLiteBackend() PerfAnalyzerBuilder {
}

// WithDBFilename sets the filename of the database file.
func (b PerfAnalyzerBuilder) WithDBFilename(
func (p PerfAnalyzerBuilder) WithDBFilename(
filename string,
) PerfAnalyzerBuilder {
b.dbFilename = filename
return b
p.dbFilename = filename
return p
}

func (p PerfAnalyzerBuilder) WithEngine(
engine sim.Engine,
) PerfAnalyzerBuilder {
p.engine = engine
return p
}

// Build creates a PerfAnalyzer.
Expand All @@ -167,5 +175,6 @@ func (b PerfAnalyzerBuilder) Build() *PerfAnalyzer {
return &PerfAnalyzer{
period: b.period,
backend: backend,
engine: b.engine,
}
}
5 changes: 5 additions & 0 deletions analysis/port_analyzer.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package analysis

import (
"fmt"
"math"
"strings"

"github.com/sarchlab/akita/v3/sim"
"github.com/tebeka/atexit"
Expand Down Expand Up @@ -35,6 +37,9 @@ func (h *PortAnalyzer) Func(ctx sim.HookCtx) {
lastPeriodEndTime := h.periodEndTime(h.lastTime)

if now > lastPeriodEndTime {
if strings.Contains(msg.Meta().Src.Name(), "RDMA") {
fmt.Printf("1\n")
}
h.summarize()
}
}
Expand Down

0 comments on commit ca1d2ed

Please sign in to comment.