fix: fix core when gathering palf stat

This commit is contained in:
obdev
2024-08-12 12:17:16 +00:00
committed by ob-robot
parent 1f1d547b7b
commit d21904fa68
2 changed files with 18 additions and 14 deletions

View File

@ -401,15 +401,19 @@ int LogBlockHandler::inner_write_once_(const offset_t offset,
K(offset), K(buf_len));
} else {
dio_aligned_buf_.truncate_buf();
total_write_size_ += buf_len;
total_write_size_after_dio_ += aligned_buf_len;
count_++;
const int64_t total_write_size = ATOMIC_AAF(&total_write_size_, buf_len);
const int64_t total_write_size_after_dio = ATOMIC_AAF(&total_write_size_after_dio_, aligned_buf_len);
const int64_t count = ATOMIC_AAF(&count_, 1);
const int64_t ob_pwrite_used_ts = ATOMIC_LOAD(&ob_pwrite_used_ts_);
if (palf_reach_time_interval(PALF_IO_STAT_PRINT_INTERVAL_US, trace_time_)) {
const int64_t each_pwrite_cost = ob_pwrite_used_ts_ / count_;
const int64_t each_pwrite_cost = ob_pwrite_used_ts / count;
PALF_LOG(INFO, "[PALF STAT WRITE LOG INFO TO DISK]", K(ret), K(offset), KPC(this), K(aligned_buf_len),
K(aligned_block_offset), K(buf_len), K(total_write_size_),
K(total_write_size_after_dio_), K_(ob_pwrite_used_ts), K_(count), K(each_pwrite_cost));
total_write_size_ = total_write_size_after_dio_ = count_ = ob_pwrite_used_ts_ = 0;
K(aligned_block_offset), K(buf_len), K(total_write_size),
K(total_write_size_after_dio), K(ob_pwrite_used_ts), K(count), K(each_pwrite_cost));
ATOMIC_STORE(&total_write_size_, 0);
ATOMIC_STORE(&total_write_size_after_dio_, 0);
ATOMIC_STORE(&count_, 0);
ATOMIC_STORE(&ob_pwrite_used_ts_, 0);
}
}
return ret;
@ -460,7 +464,7 @@ int LogBlockHandler::inner_write_impl_(const int fd, const char *buf, const int6
EVENT_TENANT_INC(ObStatEventIds::PALF_WRITE_IO_COUNT, MTL_ID());
EVENT_ADD(ObStatEventIds::PALF_WRITE_SIZE, count);
EVENT_ADD(ObStatEventIds::PALF_WRITE_TIME, cost_ts);
ob_pwrite_used_ts_ += cost_ts;
ATOMIC_AAF(&ob_pwrite_used_ts_, cost_ts);
return ret;
}
} // end of logservice

View File

@ -117,13 +117,13 @@ int LogReader::pread(const block_id_t block_id,
EVENT_TENANT_INC(ObStatEventIds::PALF_READ_IO_COUNT_FROM_DISK, MTL_ID());
EVENT_ADD(ObStatEventIds::PALF_READ_SIZE_FROM_DISK, out_read_size);
EVENT_ADD(ObStatEventIds::PALF_READ_TIME_FROM_DISK, cost_ts);
ATOMIC_INC(&accum_read_io_count_);
ATOMIC_AAF(&accum_read_log_size_, out_read_size);
ATOMIC_AAF(&accum_read_cost_ts_, cost_ts);
const int64_t accum_read_io_count = ATOMIC_AAF(&accum_read_io_count_, 1);
const int64_t accum_read_log_size = ATOMIC_AAF(&accum_read_log_size_, out_read_size);
const int64_t accum_read_cost_ts = ATOMIC_AAF(&accum_read_cost_ts_, cost_ts);
if (palf_reach_time_interval(PALF_IO_STAT_PRINT_INTERVAL_US, last_accum_read_statistic_time_)) {
const int64_t avg_pread_cost = accum_read_cost_ts_ / accum_read_io_count_;
PALF_LOG(INFO, "[PALF STAT READ LOG INFO FROM DISK]", K_(accum_read_io_count),
K_(accum_read_log_size), K(avg_pread_cost));
const int64_t avg_pread_cost = accum_read_cost_ts / accum_read_io_count;
PALF_LOG(INFO, "[PALF STAT READ LOG INFO FROM DISK]", K(accum_read_io_count),
K(accum_read_log_size), K(avg_pread_cost));
ATOMIC_STORE(&accum_read_io_count_, 0);
ATOMIC_STORE(&accum_read_log_size_, 0);
ATOMIC_STORE(&accum_read_cost_ts_, 0);