def cal_chunk_step(upper_bound):
    """
        根据数据集大小的限制，计算每个数据块的边长上界。
        返回值满足:
            chunk_step = argmax( chunk_step * (chunk_step + 1) <= upper_bound )
    """
    # block的宽
    return int(((1 + 4 * upper_bound) ** 0.5 - 1) / 2)