CFS存储类型EP和SD有何区别?
时间: 2024-03-22 13:34:18 浏览: 16
CFS存储类型EP和SD的区别如下:
1. EP存储类型:EP是ExactPrice的缩写,表示精确价格。在EP存储类型中,商品价格被存储为整数,通过将浮点价格乘以一个缩放因子来实现。例如,如果缩放因子设置为100,浮点价格99.99将被存储为9999。EP存储类型适用于需要精确到小数点后几位的价格存储。
2. SD存储类型:SD是StoredDate的缩写,表示存储日期。在SD存储类型中,日期被转换为UTC格式(如果指定了时区),并存储为自1970年1月1日以来的毫秒数的long类型。SD存储类型适用于需要存储日期并进行日期计算的场景。
下面是一个示例,演示了EP和SD存储类型的使用:
EP存储类型示例:
```python
exact_price = 9999
price = exact_price / 100
print("Price: ", price) # 输出:99.99
```
SD存储类型示例:
```python
import datetime
stored_date = datetime.datetime.utcfromtimestamp(1612345678 / 1000)
print("Stored Date: ", stored_date) # 输出:2021-02-03 17:21:18
```
相关问题
每个核都会有一个CFS运行队列吗
是的,Linux CFS 会为每个 CPU 核心(或 SMT 线程)创建一个 CFS 运行队列,用于维护当前在该核心上运行的所有调度实体。当进程需要在某个 CPU 核心上运行时,Linux 会将其放入该核心对应的运行队列中,然后根据 CFS 调度算法来进行调度。这样做可以保证各个 CPU 核心上的任务调度相互独立,避免了不同核心之间的竞争和干扰,提高了系统的整体性能。
CFS调度器永远都会运行在CPU中吗?不会被抢占?
CFS(Completely Fair Scheduler)调度器是 Linux 内核中默认的进程调度器,它负责决定在给定的时间点上应该运行哪个进程或线程。CFS 调度器是基于时间片的轮转调度算法实现的。
CFS 调度器会尽量提供公平的 CPU 时间分配给每个进程,以使所有进程都能够平等地分享 CPU 资源。它根据进程的优先级和进程的虚拟运行时间(virtual runtime)等因素进行调度决策。
CFS 调度器运行在内核空间中,而不是用户空间。它是由内核中的一个内核线程来执行和管理的。CFS 调度器在内核中运行,并且会周期性地进行调度决策,选择下一个要运行的进程。
CFS 调度器本身不会被抢占,因为它是内核级线程,具有较高的特权级别。它在内核中运行,并且不会被其他进程或用户级线程抢占。
然而,CFS 调度器会根据进程的优先级和调度策略来决定是否将当前运行的进程或线程抢占。如果有更高优先级的进程需要执行,CFS 调度器可能会中断当前运行的进程,并切换到更高优先级的进程。这是通过上下文切换来实现的,将当前进程的上下文保存,然后加载下一个要运行的进程的上下文。
总之,CFS 调度器本身不会被抢占,但它可能会抢占正在运行的进程或线程,以便公平地分配 CPU 时间给其他优先级更高的进程。