Noise ripped out after the bench verdict (tightly-wrapped unshielded cables move victim SNR only 0.2-0.3 dB, recorded in measurement.md dead ends): noise.go deleted with the noiser, phase clock and panel lane; configureNoise/checkPrivFlag gone so the X710 pair is untouched; console noise column, NOISE links rows and lane colors removed; driverPair rehomed to system.go, carrierUp to phy.go; history anchors to run start (frame-rate sampling and draw-clock roll kept — they fix display latency for every lane); goals/hardware/state/nics docs updated; verified on hardware (20.00G, zero errors, ECD 41m, SNR +7.6)
This commit is contained in:
@@ -69,7 +69,6 @@ var intervalCols = []colSpec{
|
||||
{group: "NOW", title: "link", width: 7, right: true},
|
||||
{group: "NOW", title: "internal", width: 8, right: true},
|
||||
{group: "NOW", title: "corrected", width: 9, right: true},
|
||||
{group: "NOW", title: "noise", width: 7, right: true},
|
||||
{group: "OVERALL", title: "elapsed", width: 9, right: true},
|
||||
{group: "OVERALL", title: "packets", width: 9, right: true},
|
||||
{group: "OVERALL", title: "bytes", width: 9, right: true},
|
||||
@@ -82,9 +81,8 @@ var intervalCols = []colSpec{
|
||||
}
|
||||
|
||||
// The same figures the panel draws, in the same order: the last second as
|
||||
// rates and error flags with the noise cable riding at the end of them, then
|
||||
// everything since the reset.
|
||||
func totalRow(elapsed time.Duration, v view, target float64, phy phyDisplay, nv noiseView) []string {
|
||||
// rates and error flags, then everything since the reset.
|
||||
func totalRow(elapsed time.Duration, v view, target float64, phy phyDisplay) []string {
|
||||
return []string{
|
||||
rateCell(v.rxGbps*1e9, target*1e9),
|
||||
scaleSI(v.rxPPS),
|
||||
@@ -94,7 +92,6 @@ func totalRow(elapsed time.Duration, v view, target float64, phy phyDisplay, nv
|
||||
flagCell(v.window.link),
|
||||
flagCell(v.window.internal),
|
||||
correctedFlag(phy.recent),
|
||||
noiseCell(nv),
|
||||
scaleTime(elapsed),
|
||||
scaleCount(v.rxFrames),
|
||||
scaleCount(v.rxBytes),
|
||||
@@ -202,14 +199,7 @@ func run(aName, bName string) (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
noise, err := newNoiser()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer noise.close()
|
||||
|
||||
a.tag, b.tag = "TEST A", "TEST B"
|
||||
noise.eps[0].tag, noise.eps[1].tag = "NOISE A", "NOISE B"
|
||||
ifnames := []string{a.name, b.name}
|
||||
|
||||
ethertypes := make([]uint16, numStreams)
|
||||
@@ -224,7 +214,6 @@ func run(aName, bName string) (err error) {
|
||||
|
||||
checks := configureSystem(ifnames, ethertypes)
|
||||
checks = append(checks, moduleChecks(modules, [2]string{a.name, b.name})...)
|
||||
checks = append(checks, configureNoise(noise.names())...)
|
||||
if err := reportChecks("SETTINGS", checks); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -261,13 +250,9 @@ func run(aName, bName string) (err error) {
|
||||
}()
|
||||
|
||||
var linkRows [][]string
|
||||
for i, e := range []endpoint{a, b, noise.eps[0], noise.eps[1]} {
|
||||
mod := ""
|
||||
if i < len(moduleIDs) {
|
||||
mod = moduleIDs[i]
|
||||
}
|
||||
for i, e := range []endpoint{a, b} {
|
||||
linkRows = append(linkRows, []string{
|
||||
paint(e.tag, cCyan), e.name, e.macString(), fmt.Sprintf("%d", e.mtu), mod,
|
||||
paint(e.tag, cCyan), e.name, e.macString(), fmt.Sprintf("%d", e.mtu), moduleIDs[i],
|
||||
})
|
||||
}
|
||||
fmt.Println(renderBox("LINKS",
|
||||
@@ -295,14 +280,6 @@ func run(aName, bName string) (err error) {
|
||||
defer holdPanic()
|
||||
samp.run(&done, startTx)
|
||||
}()
|
||||
// Not gated on startTx: the cycle and the connected verdict are wanted the
|
||||
// moment the panel is, and nothing it does touches the measurement.
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
defer holdPanic()
|
||||
noise.run(&done)
|
||||
}()
|
||||
for _, m := range modules {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
@@ -359,9 +336,7 @@ func run(aName, bName string) (err error) {
|
||||
}
|
||||
|
||||
start := time.Now()
|
||||
// Anchored to the same clock as the noise cycle, so slot boundaries and
|
||||
// phase transitions coincide.
|
||||
hist := newHistory(rateEpochStart)
|
||||
hist := newHistory(start)
|
||||
// A reset resets at the press, then re-measures; the measure's failures
|
||||
// are suppressed at their sources while it runs, so there is nothing to
|
||||
// hide or revert afterwards.
|
||||
@@ -405,7 +380,7 @@ func run(aName, bName string) (err error) {
|
||||
phy, measuring := phyView(diag, modules)
|
||||
hist.sample(now, v, phy, measuring, target)
|
||||
if err := disp.render(v, now.Sub(start), phy, measuring,
|
||||
noise.view(), hist.view(now), target); err != nil {
|
||||
hist.view(now), target); err != nil {
|
||||
return err
|
||||
}
|
||||
case now := <-tick.C:
|
||||
@@ -420,8 +395,7 @@ func run(aName, bName string) (err error) {
|
||||
fmt.Println(stats.rule(n))
|
||||
}
|
||||
}
|
||||
for _, line := range stats.emit(totalRow(elapsed, v, target, phy,
|
||||
noise.view())) {
|
||||
for _, line := range stats.emit(totalRow(elapsed, v, target, phy)) {
|
||||
fmt.Println(line)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user