Exemplo n.º 1
0
    internal void Increment(TraceEvent data)
    {
#if DEBUG
        // Debug.Assert((byte)data.opcode != unchecked((byte)-1));        // Means PrepForCallback not done.
        Debug.Assert(data.TaskName != "ERRORTASK");
        Debug.Assert(data.OpcodeName != "ERROROPCODE");
#endif
        Count++;
        TaskStats task = this[data.TaskName];
        if (task.ProviderName == null)
        {
            task.ProviderName = data.ProviderName;
        }

        CallStackIndex index    = data.CallStackIndex();
        bool           hasStack = (index != CallStackIndex.Invalid);
        if (hasStack)
        {
            StackCount++;
        }
        task.Increment(data.OpcodeName, hasStack);
        StackWalkTraceData asStackWalk = data as StackWalkTraceData;
        if (asStackWalk != null)
        {
            StackWalkStats stackWalkStats = task.ExtraData as StackWalkStats;
            if (stackWalkStats == null)
            {
                stackWalkStats = new StackWalkStats();
                task.ExtraData = stackWalkStats;
            }
            stackWalkStats.Log(asStackWalk);
        }
    }
Exemplo n.º 2
0
        /// <summary>
        /// Run the task, record statistics.
        /// </summary>
        /// <param name="reportStats"></param>
        /// <returns>Number of work items done by this task.</returns>
        public int RunAndMaybeStats(bool reportStats)
        {
            int count;

            if (!reportStats || ShouldNotRecordStats)
            {
                Setup();
                count = DoLogic();
                count = disableCounting ? 0 : count;
                TearDown();
                return(count);
            }
            if (reportStats && depth <= maxDepthLogStart && !ShouldNeverLogAtStart)
            {
                Console.WriteLine("------------> starting task: " + GetName());
            }
            Setup();
            Points    pnts = runData.Points;
            TaskStats ts   = pnts.MarkTaskStart(this, runData.Config.RoundNumber);

            count = DoLogic();
            count = disableCounting ? 0 : count;
            pnts.MarkTaskEnd(ts, count);
            TearDown();
            return(count);
        }
Exemplo n.º 3
0
        private int DoParallelTasks()
        {
            TaskStats stats = RunData.Points.CurrentStats;

            InitTasksArray();
            ParallelTask[] t = runningParallelTasks = new ParallelTask[repetitions * tasks.Count];
            // prepare threads
            int index = 0;

            for (int k = 0; k < repetitions; k++)
            {
                for (int i = 0; i < tasksArray.Length; i++)
                {
                    PerfTask task = (PerfTask)(tasksArray[i].Clone());
                    t[index++] = new ParallelTask(this, task);
                }
            }
            // run threads
            StartThreads(t);

            if (Stop)
            {
                foreach (ParallelTask task in t)
                {
                    task.Task.StopNow();
                }
            }

            // wait for all threads to complete
            int count = 0;

            for (int i = 0; i < t.Length; i++)
            {
                t[i].Join();
                count += t[i].Count;
                if (t[i].Task is TaskSequence sub && sub.countsByTime != null)
                {
                    if (countsByTime == null)
                    {
                        countsByTime = new int[sub.countsByTime.Length];
                    }
                    else if (countsByTime.Length < sub.countsByTime.Length)
                    {
                        countsByTime = ArrayUtil.Grow(countsByTime, sub.countsByTime.Length);
                    }
                    for (int j = 0; j < sub.countsByTime.Length; j++)
                    {
                        countsByTime[j] += sub.countsByTime[j];
                    }
                }
            }

            if (countsByTime != null)
            {
                stats.SetCountsByTime(countsByTime, logByTimeMsec);
            }

            // return total count
            return(count);
        }
Exemplo n.º 4
0
    static private void CreateTaskStats(TaskHolder statsHolder)
    {
        //TextAsset csvText = (TextAsset)AssetDatabase.LoadAssetAtPath(CSV_FOLDER + "/database - task.csv", typeof(TextAsset));
        string csvText = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/ExternalDatabase/CSV/" + ParameterFlag.CSVFileName.Task);

        CSVFile csvFile = new CSVFile(csvText);

        AssetDatabase.CreateFolder(ASSETS_FOLDER + "/Asset", "Task");

        int csvCount = csvFile.length;

        for (int i = 0; i < csvCount; i++)
        {
            string id = csvFile.Get <string>(i, "ID");

            if (string.IsNullOrEmpty(id))
            {
                continue;
            }

            TaskStats c_prefab = ScriptableObjectUtility.CreateAsset <TaskStats>(ASSETS_FOLDER + "/Asset/Task/", "[TaskStats] " + id);
            EditorUtility.SetDirty(c_prefab);

            c_prefab.id    = id;
            c_prefab.tag   = csvFile.Get <string>(i, "Tag");
            c_prefab.label = csvFile.Get <string>(i, "Name");

            c_prefab.cost   = csvFile.Get <string>(i, "Cost");
            c_prefab.effect = csvFile.Get <string>(i, "Effect");
            c_prefab.desc   = csvFile.Get <string>(i, "Description");

            statsHolder.stpObjectHolder.Add(c_prefab);
        }
    }
Exemplo n.º 5
0
    private void SetInfo(TaskStats taskStat)
    {
        title.text       = taskStat.label;
        description.text = "";

        string effectString = TaskCalculationHelper.GetDictPureString(TaskCalculationHelper.ParseRawString(taskStat.effect));
        string costString   = TaskCalculationHelper.GetDictPureString(TaskCalculationHelper.ParseRawString(taskStat.cost));

        description.text += "Effect : " + effectString;
        description.text += "Cost : " + costString;
    }
Exemplo n.º 6
0
 public TaskStats this[string taskName]
 {
     get
     {
         TaskStats ret;
         if (!Tasks.TryGetValue(taskName, out ret))
         {
             ret      = new TaskStats();
             ret.Name = taskName;
             Tasks.Add(taskName, ret);
         }
         return(ret);
     }
 }
Exemplo n.º 7
0
        public ActionResult Stat()
        {
            var intervalTask = IntervalTask.Current;

            var vm = new TaskStats
            {
                Counter      = App.Counter.ToString(),
                TimerWokeup  = formatDateTime(intervalTask.TimerWokeup),
                TimerStarted = formatDateTime(intervalTask.TimerStarted),
                TaskStarted  = formatDateTime(intervalTask.TaskStarted),
                TaskEnded    = formatDateTime(intervalTask.TaskEnded)
            };

            return(Json(vm));
        }
Exemplo n.º 8
0
        public TaskInfo(
            TaskStatus taskStatus,
            DateTime lastHeartbeat,
            OutputBufferInfo outputBuffers,
            HashSet <PlanNodeId> noMoreSplits,
            TaskStats stats,
            bool needsPlan,
            bool complete
            )
        {
            this.TaskStatus    = taskStatus ?? throw new ArgumentNullException("taskStatus");
            this.LastHeartbeat = lastHeartbeat;
            this.OutputBuffers = outputBuffers ?? throw new ArgumentNullException("outputBuffers");
            this.NoMoreSplits  = noMoreSplits ?? throw new ArgumentNullException("noMoreSplits");
            this.Stats         = stats ?? throw new ArgumentNullException("stats");

            this.NeedsPlan = needsPlan;
            this.Complete  = complete;
        }
        public IEnumerable <TaskStats> GetJobStatsInGroup(string groupName)
        {
            var groupJobsStats = new List <TaskStats>();
            var jobNames       = _clockServiceStats.GetJobNamesForGroup(groupName).Result;

            foreach (var job in jobNames)
            {
                var stats    = new TaskStats();
                var taskBase = _clockServiceStats.GetTaskBase(job, groupName).Result;
                stats.TaskId    = taskBase.TaskId;
                stats.Endpoint  = taskBase.Endpoint;
                stats.StartDate = taskBase.StartDate;
                stats.Id        = taskBase.Id;
                stats.Type      = taskBase.Type;
                stats.Group     = groupName;
                groupJobsStats.Add(stats);
            }
            return(groupJobsStats);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Compute a report line for the given task stat.
        /// </summary>
        /// <param name="longestOp">Size of longest op name in the table.</param>
        /// <param name="stat">Task stat to be printed.</param>
        /// <returns>The report line.</returns>
        protected virtual string TaskReportLine(string longestOp, TaskStats stat)
        {
            PerfTask      task = stat.Task;
            StringBuilder sb   = new StringBuilder();

            sb.Append(Formatter.Format(task.GetName(), longestOp));
            string round = (stat.Round >= 0 ? "" + stat.Round : "-");

            sb.Append(Formatter.FormatPaddLeft(round, ROUND));
            sb.Append(RunData.Config.GetColsValuesForValsByRound(stat.Round));
            sb.Append(Formatter.Format(stat.NumRuns, RUNCNT));
            sb.Append(Formatter.Format(stat.Count / stat.NumRuns, RECCNT));
            long elapsed = (stat.Elapsed > 0 ? stat.Elapsed : 1); // assume at least 1ms

            sb.Append(Formatter.Format(2, (float)(stat.Count * 1000.0 / elapsed), RECSEC));
            sb.Append(Formatter.Format(2, (float)stat.Elapsed / 1000, ELAPSED));
            sb.Append(Formatter.Format(0, (float)stat.MaxUsedMem / stat.NumRuns, USEDMEM));
            sb.Append(Formatter.Format(0, (float)stat.MaxTotMem / stat.NumRuns, TOTMEM));
            return(sb.ToString());
        }
Exemplo n.º 11
0
    public void SetUp(TaskStats taskStat)
    {
        _taskStat = taskStat;

        SetInfo(_taskStat);
    }
Exemplo n.º 12
0
 public static TaskInfo CreateInitialTask(TaskId taskId, Uri location, string nodeId, IEnumerable <BufferInfo> bufferStates, TaskStats taskStats)
 {
     return(new TaskInfo(
                TaskStatus.InitialTaskStatus(taskId, location, nodeId),
                DateTime.Now,
                new OutputBufferInfo("UNINITIALIZED", BufferState.OPEN, true, true, 0, 0, 0, 0, bufferStates),
                new HashSet <PlanNodeId>(),
                taskStats,
                true,
                false
                ));
 }