]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
Fix pgo unrecognized profile format
authorqydysky <qydysky@foxmail.com>
Sat, 25 Nov 2023 10:45:30 +0000 (18:45 +0800)
committerqydysky <qydysky@foxmail.com>
Sat, 25 Nov 2023 10:45:30 +0000 (18:45 +0800)
CV/Var.go
Reply/F/genCpuPprof/genCpuPprof.go
Reply/stream.go
demo/default.pgo
go.mod
go.sum

index 1be3085dc868f1d9c7e910b1e21b6e811d7a50f8..e3fc12a5de788209a892ab6190975a88d639e70a 100644 (file)
--- a/CV/Var.go
+++ b/CV/Var.go
@@ -374,12 +374,21 @@ func (t *Common) Init() *Common {
                                        gcAvgS = time.Since(t.StartT).Seconds() / float64(memStats.NumGC)
                                }
 
+                               reqState := t.ReqPool.PoolState()
+
                                ResStruct{0, "ok", map[string]any{
                                        "startTime":   t.StartT.Format(time.DateTime),
                                        "currentTime": time.Now().Format(time.DateTime),
                                        "state": map[string]any{
                                                "base": map[string]any{
-                                                       "reqPoolState": fmt.Sprintf("pooled(%d), nopooled(%d), inuse(%d), nouse(%d), sum(%d)", t.ReqPool.PoolState()...),
+                                                       "reqPoolState": map[string]any{
+                                                               "pooled":   reqState[0],
+                                                               "nopooled": reqState[1],
+                                                               "inuse":    reqState[2],
+                                                               "nouse":    reqState[3],
+                                                               "sum":      reqState[4],
+                                                               "qts":      reqState[5],
+                                                       },
                                                        "numGoroutine": runtime.NumGoroutine(),
                                                        "goVersion":    runtime.Version(),
                                                },
index 0608e5bd310b950331e8d3c8b0d5d1109cb1c443..4717d65eab39910e81a511d9d742356fdee22f2c 100644 (file)
@@ -1,34 +1,67 @@
 package genCpuPprof
 
 import (
+       "bytes"
        "context"
        "runtime/pprof"
+       "sync"
+       "time"
 
        comp "github.com/qydysky/part/component"
        pctx "github.com/qydysky/part/ctx"
        pfile "github.com/qydysky/part/file"
+       pio "github.com/qydysky/part/io"
 )
 
 var Start = comp.NewComp(start)
 
+var (
+       timer = time.NewTicker(time.Minute)
+       once  sync.Once
+)
+
 func start(ctx context.Context, file string) error {
        if file == "" {
                return nil
        }
-       pgo := pfile.New(file, 0, false)
-       if pgo.IsExist() {
-               _ = pgo.Delete()
-       }
-       pgo.Create()
-       if err := pprof.StartCPUProfile(pgo.File()); err != nil {
-               return err
-       }
-       go func() {
-               ctx1, done1 := pctx.WaitCtx(ctx)
-               defer done1()
-               <-ctx1.Done()
-               pprof.StopCPUProfile()
-               pgo.Close()
-       }()
+       go once.Do(
+               func() {
+                       ctx1, done1 := pctx.WaitCtx(ctx)
+                       defer done1()
+
+                       var buf bytes.Buffer
+                       var bufB = pio.RWC{
+                               R: buf.Read,
+                               W: buf.Write,
+                               C: func() error {
+                                       buf.Reset()
+                                       return nil
+                               },
+                       }
+
+                       for {
+                               _ = bufB.C()
+
+                               if err := pprof.StartCPUProfile(bufB); err != nil {
+                                       return
+                               }
+                               select {
+                               case <-timer.C:
+                                       pprof.StopCPUProfile()
+                               case <-ctx1.Done():
+                                       pprof.StopCPUProfile()
+                                       return
+                               }
+                               pgo := pfile.New(file, 0, false)
+                               if pgo.IsExist() {
+                                       _ = pgo.Delete()
+                               }
+                               pgo.Create()
+
+                               _ = pgo.CopyFromIoReader(bufB, pio.CopyConfig{})
+
+                               pgo.Close()
+                       }
+               })
        return nil
 }
index fe7d5901ba3f9db09f07dc0eff7f761d2f4f1d2a..58681096b3227cc177015898ccef1b7c2104b2b2 100644 (file)
@@ -881,7 +881,7 @@ func (t *M4SStream) saveStreamM4s() (e error) {
                                        return
                                case <-ticker.C:
                                }
-                               t.log.L(`T: `, fmt.Sprintf("m4sPoolState pooled(%d), nopooled(%d), inuse(%d), nouse(%d), sum(%d)", t.m4s_pool.PoolState()...))
+                               t.log.L(`T: `, fmt.Sprintf("m4sPoolState pooled/no(%d/%d), inuse/no(%d/%d), sum(%d), qts(%.2f)", t.m4s_pool.PoolState()...))
                        }
                }()
        }
index 22e0d2c48599bfd211cae12d8329bc136e1bb52a..5e7e844e9e267f83d836eb52b27c495a8fa9b3e6 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c9940341b8d862e7b7b9252d0a40b3f6cb617ccd8b02c718f09aa9960f647478
-size 3419671
+oid sha256:f32a91d369a03a7ddd97bb27d419f98388aab52853bdf5ce927d4be010297aa6
+size 22160
diff --git a/go.mod b/go.mod
index a3bde723fde0d8c25e17eca293e46e9230634036..b52a92fb0f8c063da99672d1cfc3bc5255994fd1 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.21
 require (
        github.com/gotk3/gotk3 v0.6.2
        github.com/mdp/qrterminal/v3 v3.2.0
-       github.com/qydysky/part v0.28.1-0.20231118053847-e87434eaf9c6
+       github.com/qydysky/part v0.28.1-0.20231125095036-ec6693063745
        github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
        github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
        golang.org/x/text v0.14.0
diff --git a/go.sum b/go.sum
index f3b2c34c3fcbd5db50fd8f911c240bf64d0075c5..1fcd6c10607bae28242cef22a517b93784452c0c 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -35,8 +35,8 @@ github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
 github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/qydysky/part v0.28.1-0.20231118053847-e87434eaf9c6 h1:MXi27E51HqeB4SR0WJ2n6/uFSQjS/pWqKNmKIWeGM4I=
-github.com/qydysky/part v0.28.1-0.20231118053847-e87434eaf9c6/go.mod h1:NyKyjpBCSjcHtKlC+fL5lCidm57UCnwEgufiBDs5yxA=
+github.com/qydysky/part v0.28.1-0.20231125095036-ec6693063745 h1:rEURkcADxEtdaOwuENPTnJKz0EfpVjHwFkegjMFWzOM=
+github.com/qydysky/part v0.28.1-0.20231125095036-ec6693063745/go.mod h1:NyKyjpBCSjcHtKlC+fL5lCidm57UCnwEgufiBDs5yxA=
 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=