> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# memory_profiler_* session settings

> ClickHouse session settings in the memory_profiler_* generated group.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Default</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Changeable without restart
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

These settings are available in [system.settings](/docs/reference/system-tables/settings) and are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<h2 id="memory_profiler_sample_max_allocation_size">
  memory\_profiler\_sample\_max\_allocation\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="0" />

Collect random allocations of size less or equal than the specified value with probability equal to `memory_profiler_sample_probability`. 0 means disabled. You may want to set 'max\_untracked\_memory' to 0 to make this threshold work as expected.

<h2 id="memory_profiler_sample_min_allocation_size">
  memory\_profiler\_sample\_min\_allocation\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="0" />

Collect random allocations of size greater or equal than the specified value with probability equal to `memory_profiler_sample_probability`. 0 means disabled. You may want to set 'max\_untracked\_memory' to 0 to make this threshold work as expected.

<h2 id="memory_profiler_sample_probability">
  memory\_profiler\_sample\_probability
</h2>

<SettingsInfoBlock type="Float" default_value="0" />

Collect random allocations and deallocations and write them into system.trace\_log with 'MemorySample' trace\_type. The probability is for every alloc/free regardless of the size of the allocation (can be changed with `memory_profiler_sample_min_allocation_size` and `memory_profiler_sample_max_allocation_size`). Note that sampling happens only when the amount of untracked memory exceeds 'max\_untracked\_memory'. You may want to set 'max\_untracked\_memory' to 0 for extra fine-grained sampling.

<h2 id="memory_profiler_step">
  memory\_profiler\_step
</h2>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

Sets the step of memory profiler. Whenever query memory usage becomes larger than every next step in number of bytes the memory profiler will collect the allocating stacktrace and will write it into [trace\_log](/docs/reference/system-tables/trace_log).

Possible values:

* A positive integer number of bytes.

* 0 for turning off the memory profiler.
