Slide 1

Slide 1 text

@dbargenis bgianf

Slide 2

Slide 2 text

Using SQLPAL, the SQL Server database engine went from… Only on Virtual Machines

Slide 3

Slide 3 text

On both virtual machines and containers To Being Available Across ALL Of These

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

SQL Server on Linux and Containers: A Story in 4 Numbers 5 3 24 25 Estimated number of years to port SQL Server to Linux natively Weeks to working prototype using SQLPAL Months to release, including support for containers Million Docker container pulls

Slide 6

Slide 6 text

Ring 3 SQL Server SVCHOST NTDLL.DLL NTDLL.DLL KB.DLL KB.DLL SQLPAL.DLL (PE) win32k.sys (PE) Linux Host Extension (ELF) Ring 0 Linux Kernel SQLPAL

Slide 7

Slide 7 text

IO Subsystem A A B B IO Subsystem A A B B C D C D Synchronous IO Asynchronous IO Wait IO Completion Issue IO

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

int epoll_wait( int epfd, struct epoll_event *events, int maxevents, int timeout ); int io_getevents( aio_context_t ctx_id, long min_nr, long nr, struct io_event *events, struct timespec *timeout );

Slide 11

Slide 11 text

https://twitter.com/axboe http://kernel.dk/io_uring.pdf

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

ThreadWaitContext - m_conditionVariable - m_waitInfos[] - m_mutex - m_signaledObjectIndex WaitableObject - m_lock - m_waitQueue (list of WaitInfo) Event - m_signalState Semaphore - m_currentCount - m_maximumCount WaitInfo - m_waitContext* (ThreadWaitContext) - m_parentObject* (WaitableObject)

Slide 14

Slide 14 text

https://lkml.org/lkml/2019/7/30/1399

Slide 15

Slide 15 text

Challenges - Additional Reading • SQL Server on Linux: How? Introduction https://cloudblogs.microsoft.com/sqlserver/2016/12/16/sql-server-on-linux-how-introduction/ • Blog posts on SQL on Linux internals https://blogs.msdn.microsoft.com/bobsql/tag/sql-server-on-linux/

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content