The rapid advances in specialized hardware, capabilities including FPGAs, TPUs,microsecond network interconnects, RDMA, GPUs, and other technologies have posed significant challenges for the... Show moreThe rapid advances in specialized hardware, capabilities including FPGAs, TPUs,microsecond network interconnects, RDMA, GPUs, and other technologies have posed significant challenges for the traditional monolithic client/server model in efficiently man- aging and scaling resources, both within industry and HPC systems. This challenge has in- stigated the emergence of a new paradigm known as resource disaggregation, which tackles the limitations of the monolithic client-server paradigm by enabling independent scaling of components such as compute, memory, and storage. The disaggregation of resources can be managed entirely through hardware or software solutions. Resource disaggregation en- hances resource utilization by fine grained scheduling of hardware resources to support dynamic workloads efficiently and empowers data centers to effectively address varying computational demands, optimize performance, and curtail operational costs, marking a pivotal evolution in modern computational infrastructure. However, software based disaggregation, whether over a single server or across multiple servers, has placed an increased burden on developers. They are compelled to continuously adapt to new software stacks and migrate applications accordingly. In some instances, despite the considerable porting efforts, the outcomes may not justify the in- vestment. Unfortunately, much of the existing research fails to adequately address the engineering investment challenge, instead prioritizing new software stacks primarily for performance gains, albeit often at the expense of developer productivity. This thesis focuses on improving developer productivity in software disaggregated environments and advocates that unless a developer has evidence they should not have to switch to a new software system or OS environment. Even when there is benefit for doing so, software tools should be able to prioritize compatibility by leveraging advancements in low-level system software stacks like the operating system and compilers. We found initial evidence on ways to improve developer productivity in software disaggregated systems by exploring analytical models backed with emulators to place bounds on application performance. Our speedup models equip developers with a tool to decide whether an application would benefit from resource disaggregation before actually trying to use such a system. While analytical models help developers gain insight before adapting to a new environment, developers may still have to port their applications to achieve high per- formance. We found out through TrackFM that compilers can enable automatic porting of applications with high performance, thereby improving developer productivity on memory disaggregated systems. One of the limitations of TrackFM was that the runtime memory policies had to be determined at static time for applications, which can lead to performance overheads for certain applications. We overcome this problem by building CARDS, a sys- tem that determines far memory policies proactively on software disaggregated systems by combining compiler and runtime information for each data structure within an applica- tion automatically. CARDS provides developers with a new alternative that determines far memory polices dynamically instead of using a complex profiling based system to improve policies. CARDS is built on top of TrackFM and overcomes the limitations of static com- pilers by codesigning compiler analysis with the runtime which enables informed policy decisions at data structure granularity. The co-design of modern compiler analysis with runtime systems opens a unique opportunity to create tools that enhance developer productivity within resource-disaggregated architectures. We also envision that such codesign can be extremely helpful in emulation of experimental hardware architectures to provide insights quickly without any application porting effort. Leveraging my expertise in low-level system software, my thesis aims to ad- vocate for the integration of automated tools in software disaggregated systems to prioritize developer productivity in datacenter environments. Show less