마운트 옵션 "ssd"를 사용하면 어떤 최적화가 활성화됩니까?

마운트 옵션 "ssd"를 사용하면 어떤 최적화가 활성화됩니까?

"BTRFS를 사용한 Debian 12 Bookworm 최소 설치"작성자: JustAGuy Linux 시간: 8:28SSD 옵션을 설정했는데,

mount -o ... ssd ...

옵션은 무엇입니까 ssd? 언제 사용해야 하고 언제 사용해서는 안 됩니까? 에 문서화된 것을 보지 못했지만 man mount온라인에서 찾았습니다.https://btrfs.readthedocs.io/en/latest/btrfs-man5.html

그것은 말한다,

4.14부터 블록 레이아웃 최적화가 제거되었습니다. 이는 1세대 SSD 장치를 지원하는 데 사용되었습니다. FTL(Flash Translation Layer)은 잘 작동하지 않으며 최적화는 블록을 더 잘 정렬하여 마모를 개선하는 것을 목표로 합니다. 최신 SSD 장치에서는 더 이상 그렇지 않으며 최적화로 인한 실질적인 이점이 없습니다. 게다가 조각화도 증가합니다.ssd_spread 옵션의 레이아웃 조정은 변경되지 않습니다.

"블록 레이아웃 최적화" 없이 SSD 옵션이 "SSD 할당 체계 제어"를 위해 또 무엇을 할 수 있습니까?

답변1

Linux 6.5-rc3에서는 SSD 옵션이 세 번만 언급됩니다.

존재하다fetch_cluster_info, SSD 옵션은 더 큰 클러스터를 할당합니다.

if (space_info->flags & BTRFS_BLOCK_GROUP_METADATA) {
    ret = &fs_info->meta_alloc_cluster;
    if (btrfs_test_opt(fs_info, SSD))
        *empty_cluster = SZ_2M;
    else
        *empty_cluster = SZ_64K;
} else if ((space_info->flags & BTRFS_BLOCK_GROUP_DATA) &&
           btrfs_test_opt(fs_info, SSD_SPREAD)) {
    *empty_cluster = SZ_2M;
    ret = &fs_info->data_alloc_cluster;
}

존재하다btrfs_find_space_cluster, SSD 옵션은 조각화를 허용하지 않습니다.

/*
 * Choose the minimum extent size we'll require for this
 * cluster.  For SSD_SPREAD, don't allow any fragmentation.
 * For metadata, allow allocates with smaller extents.  For
 * data, keep it dense.
 */
if (btrfs_test_opt(fs_info, SSD_SPREAD)) {
    cont1_bytes = bytes + empty_size;
    min_bytes = cont1_bytes;
} else if (block_group->flags & BTRFS_BLOCK_GROUP_METADATA) {
    cont1_bytes = bytes;
    min_bytes = fs_info->sectorsize;
} else {
    cont1_bytes = max(bytes, (bytes + empty_size) >> 2);
    min_bytes = fs_info->sectorsize;
}

존재하다btrfs_sync_log:

/* when we're on an ssd, just kick the log commit out */
if (!btrfs_test_opt(fs_info, SSD) &&
    test_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state)) {
    mutex_unlock(&root->log_mutex);
    schedule_timeout_uninterruptible(1);
    mutex_lock(&root->log_mutex);
}

참고로 이 질문은2020년 3월 26일 메일링 리스트에 한 번 나타났습니다..

관련 정보