Podcast
Questions and Answers
What distinguishes latency-sensitive applications from throughput-oriented ones?
What distinguishes latency-sensitive applications from throughput-oriented ones?
Latency-sensitive applications require predictable response times, while throughput-oriented applications focus on maximizing system utilization and overall throughput.
What are the challenges faced by traditional OS schedulers in supporting real-time applications?
What are the challenges faced by traditional OS schedulers in supporting real-time applications?
Traditional OS schedulers prioritize fairness and throughput, making it difficult to preempt long-running tasks necessary for meeting real-time constraints.
How do resource management strategies help real-time applications in a mixed workload environment?
How do resource management strategies help real-time applications in a mixed workload environment?
Resource management strategies ensure that real-time applications receive adequate CPU time and prevent background applications from causing delays.
What role does adaptive scheduling policy play in time-sensitive Linux (TSL)?
What role does adaptive scheduling policy play in time-sensitive Linux (TSL)?
Signup and view all the answers
What mechanisms can be integrated into an operating system to support real-time guarantees?
What mechanisms can be integrated into an operating system to support real-time guarantees?
Signup and view all the answers
In the context of TSL, what is the importance of fair resource allocation?
In the context of TSL, what is the importance of fair resource allocation?
Signup and view all the answers
What challenges arise when developing complex multimedia applications in traditional operating systems?
What challenges arise when developing complex multimedia applications in traditional operating systems?
Signup and view all the answers
Why is it difficult to achieve timeliness in general-purpose operating systems for real-time applications?
Why is it difficult to achieve timeliness in general-purpose operating systems for real-time applications?
Signup and view all the answers
What are the key goals of the Time-Sensitive Linux regarding real-time applications?
What are the key goals of the Time-Sensitive Linux regarding real-time applications?
Signup and view all the answers
How does Time-Sensitive Linux manage resources for real-time applications?
How does Time-Sensitive Linux manage resources for real-time applications?
Signup and view all the answers
What is 'Event-to-Activation Latency' and why is it important?
What is 'Event-to-Activation Latency' and why is it important?
Signup and view all the answers
What are the drawbacks of periodic timers in Time-Sensitive Linux?
What are the drawbacks of periodic timers in Time-Sensitive Linux?
Signup and view all the answers
What is the main advantage of one-shot timers compared to other types of timers?
What is the main advantage of one-shot timers compared to other types of timers?
Signup and view all the answers
What challenges do general-purpose operating systems introduce for time-sensitive applications?
What challenges do general-purpose operating systems introduce for time-sensitive applications?
Signup and view all the answers
How does Time-Sensitive Linux aim to balance the needs of latency-sensitive and throughput-oriented applications?
How does Time-Sensitive Linux aim to balance the needs of latency-sensitive and throughput-oriented applications?
Signup and view all the answers
What is preemption latency and what causes it?
What is preemption latency and what causes it?
Signup and view all the answers
What is the function of soft timers in managing event latency?
What is the function of soft timers in managing event latency?
Signup and view all the answers
What hybrid mechanism does Time-Sensitive Linux propose to handle timing issues?
What hybrid mechanism does Time-Sensitive Linux propose to handle timing issues?
Signup and view all the answers
In what ways does Time-Sensitive Linux facilitate the development of multimedia applications?
In what ways does Time-Sensitive Linux facilitate the development of multimedia applications?
Signup and view all the answers
What is the impact of scheduler latency on time-sensitive applications?
What is the impact of scheduler latency on time-sensitive applications?
Signup and view all the answers
Why is performance bounding important for throughput-oriented applications?
Why is performance bounding important for throughput-oriented applications?
Signup and view all the answers
What is the main advantage of using Firm Timers in Time Sensitive Linux systems?
What is the main advantage of using Firm Timers in Time Sensitive Linux systems?
Signup and view all the answers
What is a major benefit of embedding real-time capabilities into the operating system?
What is a major benefit of embedding real-time capabilities into the operating system?
Signup and view all the answers
How does the overshoot parameter benefit the timing mechanism?
How does the overshoot parameter benefit the timing mechanism?
Signup and view all the answers
What happens if no system call or external interrupt occurs within the overshoot window?
What happens if no system call or external interrupt occurs within the overshoot window?
Signup and view all the answers
What is the role of the timer-q data structure in Firm Timer implementation?
What is the role of the timer-q data structure in Firm Timer implementation?
Signup and view all the answers
Explain how the APIC hardware contributes to reducing timer overhead.
Explain how the APIC hardware contributes to reducing timer overhead.
Signup and view all the answers
Describe the process that occurs when the APIC timer expires.
Describe the process that occurs when the APIC timer expires.
Signup and view all the answers
What is one disadvantage of one-shot timers compared to soft timers?
What is one disadvantage of one-shot timers compared to soft timers?
Signup and view all the answers
How do Firm Timers enhance accuracy in timing for applications?
How do Firm Timers enhance accuracy in timing for applications?
Signup and view all the answers
What is the benefit of dispatching one-shot events during periodic timer events?
What is the benefit of dispatching one-shot events during periodic timer events?
Signup and view all the answers
In the context of Firm Timer implementation, what does it mean to eliminate unnecessary interrupts?
In the context of Firm Timer implementation, what does it mean to eliminate unnecessary interrupts?
Signup and view all the answers
How does the unique design of Firm Timers contribute to their flexibility?
How does the unique design of Firm Timers contribute to their flexibility?
Signup and view all the answers
What determines the practical granularity of the APIC timer in handling interrupts?
What determines the practical granularity of the APIC timer in handling interrupts?
Signup and view all the answers
What is the complexity of managing one-shot timers compared to periodic timers?
What is the complexity of managing one-shot timers compared to periodic timers?
Signup and view all the answers
Explain the concept of timer latency in the context of Firm Timers.
Explain the concept of timer latency in the context of Firm Timers.
Signup and view all the answers
What is the main benefit of implementing firm timers in TS-Linux?
What is the main benefit of implementing firm timers in TS-Linux?
Signup and view all the answers
What is kernel preemption latency?
What is kernel preemption latency?
Signup and view all the answers
How do explicit preemption points help in reducing kernel preemption latency?
How do explicit preemption points help in reducing kernel preemption latency?
Signup and view all the answers
What technique combines explicit preemption points with preemption outside critical sections?
What technique combines explicit preemption points with preemption outside critical sections?
Signup and view all the answers
What is the purpose of proportional period scheduling (PPS) in TS-Linux?
What is the purpose of proportional period scheduling (PPS) in TS-Linux?
Signup and view all the answers
What problem does priority inheritance aim to resolve in TS-Linux?
What problem does priority inheritance aim to resolve in TS-Linux?
Signup and view all the answers
How does TS-Linux balance the execution of time-sensitive and throughput-oriented tasks?
How does TS-Linux balance the execution of time-sensitive and throughput-oriented tasks?
Signup and view all the answers
What is the role of firm timers in latency reduction?
What is the role of firm timers in latency reduction?
Signup and view all the answers
How does lock-breaking affect kernel behavior?
How does lock-breaking affect kernel behavior?
Signup and view all the answers
What is the overall impact of TS-Linux on event-to-activation latency?
What is the overall impact of TS-Linux on event-to-activation latency?
Signup and view all the answers
What function does admission control serve in proportional period scheduling?
What function does admission control serve in proportional period scheduling?
Signup and view all the answers
What are the benefits of implementing a preemptible kernel in TS-Linux?
What are the benefits of implementing a preemptible kernel in TS-Linux?
Signup and view all the answers
Why is it important to avoid race conditions in the context of kernel preemption?
Why is it important to avoid race conditions in the context of kernel preemption?
Signup and view all the answers
What effect does reducing scheduling latency have on time-sensitive applications?
What effect does reducing scheduling latency have on time-sensitive applications?
Signup and view all the answers
What are the three sources of latency that TS-Linux addresses to provide reliable QoS?
What are the three sources of latency that TS-Linux addresses to provide reliable QoS?
Signup and view all the answers
What mechanism does TS-Linux use to ensure that throughput-oriented tasks receive CPU time?
What mechanism does TS-Linux use to ensure that throughput-oriented tasks receive CPU time?
Signup and view all the answers
How does TS-Linux demonstrate real-time performance on standard operating systems?
How does TS-Linux demonstrate real-time performance on standard operating systems?
Signup and view all the answers
What type of applications are referred to as Situation Awareness Applications?
What type of applications are referred to as Situation Awareness Applications?
Signup and view all the answers
What are the two programming paradigms mentioned for developing real-time multimedia applications?
What are the two programming paradigms mentioned for developing real-time multimedia applications?
Signup and view all the answers
What key challenge does real-time data processing face in the context of sensor-based applications?
What key challenge does real-time data processing face in the context of sensor-based applications?
Signup and view all the answers
What is the role of middleware in supporting distributed multimedia applications?
What is the role of middleware in supporting distributed multimedia applications?
Signup and view all the answers
What is a significant limitation of the Sockets API in the context of emerging multimedia applications?
What is a significant limitation of the Sockets API in the context of emerging multimedia applications?
Signup and view all the answers
What are the implications of balancing resource management in TS-Linux?
What are the implications of balancing resource management in TS-Linux?
Signup and view all the answers
What type of sensors are mentioned as part of the infrastructure for situation awareness applications?
What type of sensors are mentioned as part of the infrastructure for situation awareness applications?
Signup and view all the answers
What are two key requirements for middleware solutions in real-time sensor-based applications?
What are two key requirements for middleware solutions in real-time sensor-based applications?
Signup and view all the answers
What is a notable outcome of the empirical performance evaluations conducted on TS-Linux?
What is a notable outcome of the empirical performance evaluations conducted on TS-Linux?
Signup and view all the answers
What are feedback and control mechanisms required for in middleware for multimedia applications?
What are feedback and control mechanisms required for in middleware for multimedia applications?
Signup and view all the answers
In what situations are powerful computational engines like clusters and cloud infrastructures necessary?
In what situations are powerful computational engines like clusters and cloud infrastructures necessary?
Signup and view all the answers
How does the PTS programming model benefit developers working with time-sensitive data?
How does the PTS programming model benefit developers working with time-sensitive data?
Signup and view all the answers
What is the role of automatic data management in the PTS model?
What is the role of automatic data management in the PTS model?
Signup and view all the answers
Comparison the fetching of data in PTS to that in traditional systems?
Comparison the fetching of data in PTS to that in traditional systems?
Signup and view all the answers
What are the key features of PTS that support temporal data correlation?
What are the key features of PTS that support temporal data correlation?
Signup and view all the answers
How does PTS handle memory optimization?
How does PTS handle memory optimization?
Signup and view all the answers
What are the implications of using transparent stream persistence in PTS?
What are the implications of using transparent stream persistence in PTS?
Signup and view all the answers
What advantage does PTS provide for domain experts compared to traditional data handling?
What advantage does PTS provide for domain experts compared to traditional data handling?
Signup and view all the answers
In what way does PTS address challenges in real-time data handling?
In what way does PTS address challenges in real-time data handling?
Signup and view all the answers
What are the primary pain points for domain experts when dealing with video analytics?
What are the primary pain points for domain experts when dealing with video analytics?
Signup and view all the answers
Explain the role of Persistent Temporal Streams (PTS) in handling time-sensitive data.
Explain the role of Persistent Temporal Streams (PTS) in handling time-sensitive data.
Signup and view all the answers
What are the key features of the PTS programming model that support distributed applications?
What are the key features of the PTS programming model that support distributed applications?
Signup and view all the answers
How do channels differ from traditional sockets in the PTS model?
How do channels differ from traditional sockets in the PTS model?
Signup and view all the answers
What operation is used to place data into a channel in the PTS programming model?
What operation is used to place data into a channel in the PTS programming model?
Signup and view all the answers
Describe how the get(lower_bound, upper_bound)
operation functions in PTS.
Describe how the get(lower_bound, upper_bound)
operation functions in PTS.
Signup and view all the answers
What is the significance of temporal causality in the PTS model?
What is the significance of temporal causality in the PTS model?
Signup and view all the answers
How does PTS enhance the productivity of domain experts?
How does PTS enhance the productivity of domain experts?
Signup and view all the answers
In the context of PTS, what is the role of a detector thread?
In the context of PTS, what is the role of a detector thread?
Signup and view all the answers
What advantages does the PTS programming model provide for managing multiple data streams?
What advantages does the PTS programming model provide for managing multiple data streams?
Signup and view all the answers
What improvements does PTS offer for scalability in applications handling real-time data?
What improvements does PTS offer for scalability in applications handling real-time data?
Signup and view all the answers
What learning opportunities does studying PTS provide for developers?
What learning opportunities does studying PTS provide for developers?
Signup and view all the answers
How does PTS support the temporal indexing of data?
How does PTS support the temporal indexing of data?
Signup and view all the answers
What is the primary objective of large-scale situation awareness applications like airport activity monitoring?
What is the primary objective of large-scale situation awareness applications like airport activity monitoring?
Signup and view all the answers
Why is specialized middleware like PTS essential for distributed systems?
Why is specialized middleware like PTS essential for distributed systems?
Signup and view all the answers
Why is it essential to prune sensor streams at the source in large-scale surveillance systems?
Why is it essential to prune sensor streams at the source in large-scale surveillance systems?
Signup and view all the answers
How do false positives and false negatives impact surveillance systems?
How do false positives and false negatives impact surveillance systems?
Signup and view all the answers
What is the significance of maintaining temporal ordering and causality in distributed systems?
What is the significance of maintaining temporal ordering and causality in distributed systems?
Signup and view all the answers
What approaches can be taken to manage time-sensitive data in real-time systems?
What approaches can be taken to manage time-sensitive data in real-time systems?
Signup and view all the answers
What role does the computation pipeline play in video analytics applications?
What role does the computation pipeline play in video analytics applications?
Signup and view all the answers
Explain the concept of high-level inference in the context of situation awareness applications.
Explain the concept of high-level inference in the context of situation awareness applications.
Signup and view all the answers
Why is scalability a concern in traditional surveillance relying on human operators?
Why is scalability a concern in traditional surveillance relying on human operators?
Signup and view all the answers
What is the benefit of having software APIs in the context of large-scale applications?
What is the benefit of having software APIs in the context of large-scale applications?
Signup and view all the answers
How does context from historical data aid in the evaluation of live data in surveillance applications?
How does context from historical data aid in the evaluation of live data in surveillance applications?
Signup and view all the answers
What does the seamless migration of computation between edge devices and data centers enable?
What does the seamless migration of computation between edge devices and data centers enable?
Signup and view all the answers
Describe the challenge of handling objects moving between different cameras in surveillance.
Describe the challenge of handling objects moving between different cameras in surveillance.
Signup and view all the answers
What is the importance of reducing complexity in the development of surveillance applications?
What is the importance of reducing complexity in the development of surveillance applications?
Signup and view all the answers
How do alerts or actions get triggered in video analytics applications after recognition of suspicious individuals?
How do alerts or actions get triggered in video analytics applications after recognition of suspicious individuals?
Signup and view all the answers
What is the main benefit of stream grouping in the PTS programming model?
What is the main benefit of stream grouping in the PTS programming model?
Signup and view all the answers
How does the group_get() function improve data handling in PTS?
How does the group_get() function improve data handling in PTS?
Signup and view all the answers
What is an anchor stream in the context of PTS stream groups?
What is an anchor stream in the context of PTS stream groups?
Signup and view all the answers
Explain the role of channels in the PTS programming model.
Explain the role of channels in the PTS programming model.
Signup and view all the answers
What is the significance of treating time as a first-class entity in PTS channels?
What is the significance of treating time as a first-class entity in PTS channels?
Signup and view all the answers
How does the PTS model enhance the simplicity of application development?
How does the PTS model enhance the simplicity of application development?
Signup and view all the answers
Describe a typical workflow of the sequential video analytics pipeline in PTS.
Describe a typical workflow of the sequential video analytics pipeline in PTS.
Signup and view all the answers
What is the purpose of the put_item() operation in PTS?
What is the purpose of the put_item() operation in PTS?
Signup and view all the answers
How do PTS abstractions simplify the conversion of sequential to distributed programs?
How do PTS abstractions simplify the conversion of sequential to distributed programs?
Signup and view all the answers
What advantages does using named channels provide in PTS?
What advantages does using named channels provide in PTS?
Signup and view all the answers
Why is temporal data handling important in situation awareness applications?
Why is temporal data handling important in situation awareness applications?
Signup and view all the answers
What is the purpose of the get() operation in PTS?
What is the purpose of the get() operation in PTS?
Signup and view all the answers
Discuss how PTS supports scalability in large-scale applications.
Discuss how PTS supports scalability in large-scale applications.
Signup and view all the answers
How does the PTS programming model facilitate ease of data sharing?
How does the PTS programming model facilitate ease of data sharing?
Signup and view all the answers
What benefit does the PTS runtime system provide to application developers?
What benefit does the PTS runtime system provide to application developers?
Signup and view all the answers
What challenges does the PTS programming model address in distributed system development?
What challenges does the PTS programming model address in distributed system development?
Signup and view all the answers
What is the primary role of application-controlled persistence in data management?
What is the primary role of application-controlled persistence in data management?
Signup and view all the answers
How do PTS channels simplify interactions between live and archived data?
How do PTS channels simplify interactions between live and archived data?
Signup and view all the answers
What potential advantage does a temporal data management system offer for applications?
What potential advantage does a temporal data management system offer for applications?
Signup and view all the answers
Define the purpose of the live channel layer in the three-layer channel architecture.
Define the purpose of the live channel layer in the three-layer channel architecture.
Signup and view all the answers
What happens to data that exceeds the retention policy in the live channel layer?
What happens to data that exceeds the retention policy in the live channel layer?
Signup and view all the answers
Explain the function of the pickling handler in the persistence layer.
Explain the function of the pickling handler in the persistence layer.
Signup and view all the answers
Why is seamless access to both live and historical data important for applications?
Why is seamless access to both live and historical data important for applications?
Signup and view all the answers
What role do worker threads play in a PTS application?
What role do worker threads play in a PTS application?
Signup and view all the answers
How does the PTS runtime system assist developers in managing data retrieval complexity?
How does the PTS runtime system assist developers in managing data retrieval complexity?
Signup and view all the answers
What are the advantages of specifying channel properties at creation time in PTS?
What are the advantages of specifying channel properties at creation time in PTS?
Signup and view all the answers
In what ways does the PTS framework facilitate advanced situation awareness applications?
In what ways does the PTS framework facilitate advanced situation awareness applications?
Signup and view all the answers
What is the significance of garbage collection (GC) in the context of the live channel layer?
What is the significance of garbage collection (GC) in the context of the live channel layer?
Signup and view all the answers
Describe the function of the interaction layer in the three-layer architecture.
Describe the function of the interaction layer in the three-layer architecture.
Signup and view all the answers
What critical features do PTS channels provide for handling large-scale, time-sensitive distributed applications?
What critical features do PTS channels provide for handling large-scale, time-sensitive distributed applications?
Signup and view all the answers
Study Notes
TS-Linux Introduction
- Traditional OSes primarily designed for throughput-oriented applications (e.g., databases, scientific computing).
- Growing need for real-time applications (e.g., AV players, video games) sensitive to latency.
- Mixing these application types creates challenges in resource management and scheduling.
- Traditional schedulers prioritize fairness, not latency, and may interfere with real-time constraints.
- Complex multimedia applications often lack OS support for timing guarantees.
- TS-Linux extends Linux, providing real-time scheduling enhancements, resource management policies, and performance bounding for throughput applications.
- Goals: consistent and predictable real-time performance, minimal throughput degradation, balanced resource distribution.
- OS-level support allows simplified development of multimedia applications, reducing complexity and errors.
- TS-Linux aims to balance the needs of different application types.
Sources of Latency in General-Purpose Operating Systems
- Time-sensitive applications require rapid responses to events.
- Latency stems from three key sources in traditional OSes (timer, preemption, scheduler delays).
- Timer latency: Inaccuracy and granularity of the timing mechanism (e.g., 10 ms in Linux).
- Preemption latency: Kernel cannot preempt immediately due to kernel critical sections or higher priority interrupts.
- Scheduler latency: Delays in scheduling the event-handling application, potentially after the interrupt handler is executed.
- Event-to-activation latency: The time between an event's occurrence and its handling by the application. Reducing this is crucial for responsiveness.
- General-purpose OSes introduce significant latency unsuitable for time-sensitive applications.
Timers Available (Periodic, One-Shot, Soft, Firm)
- Periodic timers: Regularly timed interrupts (predictable, but coarse).
- One-shot timers: Precise interrupts at specific times (accurate, but high overhead).
- Soft timers: No interrupts, OS polls (low overhead, but unpredictable latency).
- Firm timers: A hybrid approach, designed to leverage the strengths of existing timers (periodic, one-shot, and soft timers) while mitigating their weaknesses.
Firm Timer Design in Time-Sensitive Linux
- Aims to provide accurate timing with low overhead, combining the advantages of one-shot and soft timers.
- Uses an "overshoot parameter" to define a window for processing timers during kernel entries.
- Kernel entries (system calls, external interrupts) allow early dispatch of expired timers, reducing the need for additional timer interrupts.
- By strategically dispatching timers during existing kernel activity, firm timers reduce overhead and maintain high accuracy.
- The overshoot parameter allows customization between accuracy and overhead.
- Robust fall back mechanism exists if an overshoot window goes without kernel entry.
Reducing Kernel Preemption Latency
- Kernel preemption latency occurs when the kernel is busy with non-preemptible operations (e.g., updating shared data structures).
- Explicit preemption points: Inserting points in kernel code where preemption is safe.
- Preemption outside critical sections: Preventing preemption only during critical section manipulation.
- Lock-breaking: Breaking long critical sections into smaller ones, allowing preemption at safe points within the section.
Reducing Scheduling Latency
- Scheduling latency is the delay in executing a time-sensitive application due to higher-priority tasks.
- Proportional period scheduling (PPS): Applications request a portion of CPU time within a given time period, subject to admission control.
- Priority scheduling with priority inheritance: Handles priority inversion by temporarily elevating a low-priority task's priority when serving a high-priority task.
Balancing Time-Sensitive and Throughput-Oriented Tasks
- TS-Linux can allocate a portion of CPU time to throughput-oriented tasks, preventing them from being ignored in favor of time-sensitive tasks.
PTS - Notes on Middleware for Distributed Multimedia Applications
- Middleware is needed to bridge between commodity OSes and distributed real-time multimedia applications (especially sensor-based applications).
- Traditional programming models (sockets, RPC) are too low-level for emerging applications.
- Sensor-based, distributed multimedia applications require live stream analysis, situation awareness, and often a control loop structure.
- Middleware needs advanced APIs, real-time support, resource management, sensor integration, control mechanisms, and should simplify development for domain experts.
Example - Large-Scale Situation Awareness Applications
- Large-scale applications (e.g., airport activity monitoring) involve numerous sensors, requiring sophisticated methods to analyze voluminous data in real-time.
- Challenges include infrastructure overload (data volume, network bandwidth, processing), scalability of human monitoring, and reducing false positives/negatives.
- Data needs to be filtered, processed locally, and only relevant information sent to central systems.
- Middleware is crucial for enabling scalability and for providing abstractions to simplify development.
PTS (Persistent Temporal Streams) Programming Model
- PTS is middleware for handling time-sensitive data streams in distributed applications.
- Utilizes channels and operations (e.g., put_item, get) for time-stamped data exchange between threads, maintaining temporal causality.
- Provides powerful mechanisms for correlated multi-modal data handling.
- Allows easy transition from sequential to distributed programs.
PTS Design Principles
- Employs channels as named, distributed entities to provide time-based access and communication.
- Uses simple primitives (put, get) with time stamps for data manipulation.
- PTS runtime system handles data management (persistence, garbage collection, live/historical data handling).
- Permits applications to control data persistence by defining policies and handlers.
Persistent Channel Architecture
- PTS runtime manages live data, persistence, and data lifecycle.
- Three-layer architecture: live channel (in-memory data), interaction layer, and persistence layer (storing data on disk).
- GC manages items exceeding retention duration, with application-defined handling.
- Supports various backend storage technologies.
Power of Simplicity in System Design
- Simple system design, like in PTS, aids adoption and developer focus on application logic.
PTS Conclusion
- PTS simplifies live stream analysis, comparable to MapReduce for big data.
- Supports time-based distributed data structures, automatic data management, and transparent stream persistence.
- Provides benefits for domain experts—ease of use, streamlined development.
- Addresses challenges in real-time multimedia, like efficient storage, handling live/historical data, and maintaining temporal causality.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Explore the features and goals of TS-Linux, an extension of Linux designed to cater to both throughput-oriented and real-time applications. This quiz covers the challenges posed by traditional operating systems when mixing these application types and how TS-Linux improves resource management and scheduling for multimedia applications. Test your knowledge on the real-time scheduling enhancements and the balance achieved in performance and resource distribution.