• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Slides - International Informix Users Group
 

Slides - International Informix Users Group

on

  • 745 views

 

Statistics

Views

Total Views
745
Views on SlideShare
745
Embed Views
0

Actions

Likes
0
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Lets visit the major milestones in our LINUX history that illustrates our support for LINUX the past several years. This also reiterates our LINUX support and strategy. 1998 : IBM Informix acknowledged the importance of LINUX and first experimented with a client (ESQL/C) and SE backend and released its first commercial version Later that year we released 7.24 IDS online was the first commercial LINUX Database in the market 1999 : In those days 7.30 was out bread & butter product and we released the engine and labeled it LINUX edition with limited features to support the notion that “we had to release a product on LINUX for SMBs who had intense OLTP requirements without all the overhead of SMP”. We added on 4GL and I-SQL to our LINUX portfolio. Later that year, owing to the its popularity and customer demand with LINUX being treated in line with other mainstream UNIX operating systems, we released a full blown feature set version as long as LINUX OS was not limiting it. E.g.: KAIO was not supported 2003: From 1999 on, LINUX has been treated as any mainstream OS with all product releases – became business as usual adding continuously new products to our portfolio Interesting FACT: By early 2001, prior to us being acquired by IBM, we had been experimenting and incidentally we had a working 31 Bit version of IDS on LINUX 390 [zSeries] exactly on the day we were acquired by IBM – proving our common LINUX vision. This was the first lab version of this family and finally in 2003 we rolled out the 64 Bit 9.4 Engine on zSeries. This is the first time IDS is running on a mainframe!! We will talk about this later on in the presentation. 2004 : This is a great year. This is the first time we will support all IBM hardware platforms which support LINUX. IA 64 release
  • Direct I/O (DIO) is an alternative caching policy that reduces CPU utilization for reads and writes by eliminating the copy from file cache to user buffer. A read/write against a file opened with the O_DIRECT flag causes data to be transferred directly between the user buffer and the disk. Kernel Asynchronous I/O (AIO) allows applications to overlap processing with I/O operations for improved CPU and device utilization. With AIO, processes do not need to wait for I/O requests to complete; they can continue with other processing while the I/O operations are completed.
  • X86 needs i686 compatible processors
  • CPU affinity is a 2.6 kernel feature that has also been back ported. For IDS to take advantage of this feature on a 2.4 kernel, one of the following distributions is required: • Red Hat Enterprise Linux 3 • SUSE Linux Enterprise Server 8
  • LSC - Large Scale Linux Solution Test Center
  • Database Server 16-way z900, type 2064-216 with 910 MHz, equipped with • 16 CPUs • 2 x 16 MB L2 cache • 64 GB memory • 2 GbE Cards Hydra 1,75 (connected to 4 PCs x330) installed with: • SUSE LINUX ENTERPRISE SERVER 8 SP2 2.4.19 64–bit • IBM Informix Dynamic Server Version 9.40.FC3 The database sizes were 16 GB – 220 GB.
  • IBM Informix Dynamic Server supports Kernel Asynchronous I/O (KAIO) on character devices (a.k.a. raw devices) and block devices. It is enabled by default, and can be disabled by setting the environment variable KAIOOFF=1 in the environment of the process that brings up the server. When using KAIO, it is recommended to run poll threads on separate VPs by specifiying NET as VP class in the NETTYPE onconfig parameter, e.g. NETTYPE ipcshm,...,...,NET or NETTYPE soctcp,...,...,NET On Linux, there is a system wide limit of the maximum number of parallel KAIO requests. The file /proc/sys/fs/aio-max-nr is containing this value. It can be increased by the Linux system administrator, e.g. by # echo new_value > /proc/sys/fs/aio-max-nr The current number of allocated requests of all OS processes is visible in /proc/sys/fs/aio-nr. By default, IBM Informix Dynamic server is allocating half of the maximum number of requests, and assigns them equally to the number of configured CPU VPs. The number of requests allocated per CPU VP can be controlled by the environment variable KAIOON, by setting it to the required value before bringing up the server. The minimum value for KAIOON is 100. If Linux is about to run out of KAIO resources, e.g. when dynamically adding many CPU VPs, warnings will be printed to the online.log file. In this case, the Linux system administrator should add KAIO resources as described above. Note that the libaio.so library is required, regardless of the distribution or kernel level. At the time of writing, IBM Informix Dynamic Server requires a minimum of libaio 0.3.96-3.
  • For TPC like workload on zSeries AS was factor 50% worth then the others You can choose the I/O Scheduler in the /etc/zipl.conf with the elevator parameter: On other Linux system: Selecting IO schedulers ----------------------- To choose IO schedulers at boot time, use the argument 'elevator=deadline'. 'noop' and 'as' (the default) are also available. IO schedulers are assigned globally at boot time only presently.
  • 08048000-089b9000 r-xp 00000000 03:01 65677 /work/9.50/bin/oninit 089b9000-08b20000 rw-p 00970000 03:01 65677 /work/9.50/bin/oninit 08b20000-08bbb000 rw-p 00000000 00:00 0 10000000-12b5d000 rw-s 00000000 00:04 22052864 /SYSV52694801 (deleted) 12b5d000-13afd000 rw-s 00000000 00:04 22085633 /SYSV52694802 (deleted) 13afd000-13b81000 rw-s 00000000 00:04 22118402 /SYSV52694803 (deleted) 13b81000-14381000 rw-s 00000000 00:04 22151171 /SYSV52694804 (deleted) b7363000-b736e000 r-xp 00000000 03:02 189112 /lib/libnss_files-2.3.2.so b736e000-b736f000 rw-p 0000a000 03:02 189112 /lib/libnss_files-2.3.2.so b736f000-b7370000 rw-p 00000000 00:00 0 b7370000-b74a1000 r-xp 00000000 03:02 346507 /lib/tls/libc-2.3.2.so b74a1000-b74a4000 rw-p 00130000 03:02 346507 /lib/tls/libc-2.3.2.so b74a4000-b74a7000 rw-p 00000000 00:00 0 b74a7000-b74af000 r-xp 00000000 03:02 188931 /lib/libgcc_s-3.2.3-20030829.so.1 b74af000-b74b0000 rw-p 00007000 03:02 188931 /lib/libgcc_s-3.2.3-20030829.so.1 b74b0000-b74d1000 r-xp 00000000 03:02 346509 /lib/tls/libm-2.3.2.so b74d1000-b74d2000 rw-p 00020000 03:02 346509 /lib/tls/libm-2.3.2.so b74d2000-b74d3000 rw-p 00000000 00:00 0 b74d3000-b757c000 r-xp 00000000 03:02 110469 /usr/lib/libstdc++.so.5.0.3 b757c000-b7581000 rw-p 000a8000 03:02 110469 /usr/lib/libstdc++.so.5.0.3 b7581000-b7586000 rw-p 00000000 00:00 0 b7586000-b758d000 r-xp 00000000 03:02 189159 /lib/libpam.so.0.75 b758d000-b758e000 rw-p 00007000 03:02 189159 /lib/libpam.so.0.75 b758e000-b759d000 r-xp 00000000 03:02 110373 /usr/lib/libelf-0.89.so b759d000-b759e000 rw-p 0000f000 03:02 110373 /usr/lib/libelf-0.89.so b759e000-b75a3000 r-xp 00000000 03:02 189090 /lib/libcrypt-2.3.2.so b75a3000-b75a4000 rw-p 00004000 03:02 189090 /lib/libcrypt-2.3.2.so b75a4000-b75cb000 rw-p 00000000 00:00 0 b75cb000-b75cd000 r-xp 00000000 03:02 189092 /lib/libdl-2.3.2.so b75cd000-b75ce000 rw-p 00001000 03:02 189092 /lib/libdl-2.3.2.so b75ce000-b75db000 r-xp 00000000 03:02 346511 /lib/tls/libpthread-0.60.so b75db000-b75dc000 rw-p 0000c000 03:02 346511 /lib/tls/libpthread-0.60.so b75dc000-b75df000 rw-p 00000000 00:00 0 b75eb000-b7600000 r-xp 00000000 03:02 189079 /lib/ld-2.3.2.so b7600000-b7601000 rw-p 00015000 03:02 189079 /lib/ld-2.3.2.so bffbb000-c0000000 rwxp fffbf000 00:00 0
  • All taken from the customer reference database and can be referenced (all from 2004 and 2003 !!)

Slides - International Informix Users Group Slides - International Informix Users Group Presentation Transcript

  • Informix on Linux and A “Sneak Peek” at the New IDS Next Installer Jerry Keesee, Director of the Informix lab Sandor Szabo, Development, Informix R&D, Munich Kozhikode Venugopalan (Venu), Architect, Informix R&D Srini Bhagavan, Architect, IBM Data Management
  • Informix on Linux Sandor Szabo, Development, Informix R&D, Munich Kozhikode Venugopalan (Venu), Architect, Informix R&D
  • Agenda
    • IBM Informix and LINUX
    • Performance & Scalability
    • Tips and Tricks !
    • Usage Trend
    • Strategy and Roadmap
    • Summary
  • History 1998 : IBM Informix ESQL/C & SE on LINUX 1998 : First commercial Enterprise LINUX DB – IBM IDS 7.24 1999 : LINUX edition – IBM IDS 7.30. Limited features. 4GL & I-SQL clients. 1999 : LINUX edition – IBM IDS 9.20. Full feature set support. 2003 : IBM IDS 9.4 - 64 bit DB Engine on zSeries 2004 : IBM IDS 9.4 64 bit on Itanium
  • 2004 Achievements & near future plans
    • Reintroducing RPM support from IDS 9.40.UC5
    • Certification of IDS products on Red Hat & SUSE enterprise versions
    • Test suites to vendors
    • Time limited license support
    • Support for ALL IBM platforms that support LINUX !!
      • IA64 (64-bit edition for Intel Itanium based systems)
      • POWER™ 64-bit (IBM eServer™ iSeries™ and pSeries® systems)
      • AMD64 (64-bit edition for AMD Opteron and Athlon64 based systems)
      • Intel® EM64T
  • 2004 Achievements & near future plans
    • Exploitation of the 2.6 kernel
    • KAIO support
    • Processor Affinity to achieve improved scalability
    • SNMP support
  • Current HW support on Linux
    • Support for 32 bit Intel x86 platforms (32-bit edition for Intel Pentium®, Xeon and AMD Athlon )
    • zSeries® 64 bit (IBM eServer zSeries systems)
    • IA64 (64-bit edition for Intel Itanium based systems)
    • POWER™ on Linux (IBM eServer™ iSeries™ and pSeries® systems) supported with IDS vNext
    • AMD 64 & EM64T supported with IDS vNext
  • IBM Informix leverage
    • Leveraging IBM relationships & partnerships with Linux vendors like SUSE, Red Hat (Better escalation channel for issues).
    • Access to alpha/beta versions of Linux distributions
    • Beta program participation
    • Supply test suites to Linux distributors
    • Share IBM Linux strategy vision
    • Easier access to new hardware
    Translates as benefits to our customers!
  • Agenda
    • IBM Informix and LINUX
    • Performance & Scalability
    • Tips and Tricks !
    • Usage Trend
    • Strategy and Roadmap
    • Summary
  • Performance Tips
    • Scales linearly on SMP – internal benchmarks
    • Up to 2.5GB of contiguous shared memory (32 Bit)
    • Very Large Memory > 4 GB support (64 Bit)
    • Large file suport > 2G in 9.4 (>7.25, SE and CISAM)
    • Choose your FS carefully for cooked files
  • Scalability & Performance improvements
    • Choose PAGE size carefully in IDS vNext
    • Processor Affinity
    • KAIO (on raw devices)
  • IDS 9.4 for Linux on zSeries
    • IBM Informix 9.40 is the first IBM database engine to fully exploit the large memory, 64-bit capabilities of the Linux kernel on the zSeries.
    • Fully implemented 64-bit architecture
    • 64-bit systems reduce the work of the application programmer by removing the design constraints inherent in 31- bit architectures
  • Objectives of the sizing project
    • Analyze the performance of the Informix database by scaling CPUs, memory and database size
    • Identify the scalability of Linux for IBM zSeries using Informix transactional workloads
    • Investigate the performance of different disk s
    • The test environment is a customer-like environment, not a system for high-end benchmarking.
  • Workloads used.....
      • TPC-C like
        • High hit ratio : use a small number of warehouses (10 or 20) and stay with this through CPU and memory scaling
        • Low hit ratio: scale number of warehouses with throughput while scaling CPUs and memory. The ratio between warehouses and new order transactions per minute is 1:12.
  • CPU Scaling [2GB workload fully cached – 10WH]
  • " The workload scales perfectly from 1 to 16 CPUs, demonstrating that the Informix database, SUSE SLES8 and the zSeries hardware are very well suited for scaling even beyond 4 CPUs " Large Scale Linux Solution Test Center Informix 9.4.0 FC3 on SUSE LINUX ENTERPRISE SERVER 8 SP2 (64-bit) on IBM zSeries
  • Agenda
    • IBM Informix and LINUX
    • Performance & Scalability
    • Tips and Tricks !
    • Usage Trends
    • Strategy and Roadmap
    • Summary
  • Tips and Tricks
    • LibAIO.so library – OS requirement
    • minimum version is libaio 0.3.96-3.
    • KAIO automatically works on raw devices and can be turned off by KAIOOFF =1
    • Processor affinity onconfig variables
      • AFF_SPROC = <Start Processor>
      • AFF_NPROCS = <# Processors>
  • Tips and Tricks
      • AS (Anticipatory I/O)
      • NOOP (No-op I/O)
      • CFQ (C omplete F airness Q ueueing )
      • DEADLINE
    Experiences with different 2.6 Kernel I/O schedulers on zLinux
  • How to Change the Location of Shared Library for a Process on SUSE Linux……
    • Beginning with kernel version 2.4.19, Linux provides a way to dynamically change the default start address for shared libraries on a per-process basis. This feature is available, if the file /proc/$$/mapped_base exists.
    • To change the start address for shared libraries of the oninit processes, the new start address needs to be specified by user root in the shell from where oninit is started.
    • Example:
        • $ echo $$
        • 29712
        • $ su root
        • Password:
        • # # the following sets the start address of shared libraries to 0xB0000000:
        • # echo -1342177280 > /proc/29712/mapped_base
        • # exit
        • $ oninit
    How to Change the Location of Shared Library for a Process on SUSE Linux…… Assuming the $ONCONFIG parameter SHMBASE is 0x10000000, this gives 2.5 GB of contiguous address space available for the database server.
  • How to Change the Location of Shared Library for a Process on RedHat Linux……
    • On Red Hat Enterprise Linux 3 the start address for shared libraries is 0xb7600000 and memory address space is utilized downwards.
    • The ONCONFIG variable SHMBASE is recommend to be set at SHMBASE 0x10000000L
    • - $ cat /proc/25830/maps [see notes]
  • LINUX file systems
      • EXT2 is good ….
      • JFS gave very good performance in our tests
      • Reiser File System (reiserfs), which is the default file system on some Linux distributions gives bad performance....
      • Lots of memory is good for file system caching!!
  • Agenda
    • IBM Informix and LINUX
    • Performance & Scalability
    • Tips and Tricks !
    • Usage Trend
    • Strategy and Roadmap
    • Summary
  • Informix Success Stories on Linux
    • Cisco: voice over IP as embedded DB
    • Italian Foreign Ministry: 200 embassies world wide
    • GE Interlogix: world´s largest access-control system supplier
    • Online Computing: ERP supplier for Fireworks companies
    • CornerCap: Portfolio management a
    • Physics Institute of University of Cantabria: GRID research
  • Informix Success Stories on Linux
    • Apropos Retail: Management system for retailers
    • French Air Force: Human Resource Department
    • Magna Steyr Fahrzeugtechnik
    • Morgan Stanley: Financial Datablade and Real-time Loader
    • Sabo Italy: Fire fighting liquids, products for cosmetic industry
  • Reference Customers on Linux zSeries
    • T-Systems International GmbH
    • Bayersiches Landesamt fuer Statistik und Datenverarbeitung
    • State of California
    • Datenzentrale Mecklenburg-Vorpommern
    • China Life and PICC
    All quotes from published success stories or references See the success story section off of http://www.ibm.com/software/data/informix or talk to your sales rep for more details
  • IDS + WebSphere
    • Web-based tax collection system
    • Needs: resiliency, 24x7 availability, ease of use, open standards
    • Solution:
      • Web portal based based on IBM WebSphere Application Server on Linux
      • IBM Informix Dynamic Server
      • IBM Informix SQL, ESQL/C, MaxConnect
    • Value:
      • Significant cost reduction
      • More efficient tax collection
      • Convenience and speed lead to increased customer satisfaction
      • Current solution allows for future expansion
    Flexibility, Options, Efficiency Reduced Costs! Secretaria de Finanzas Gobierno del Estado de Jalisco
  • El Salvador Tax Administration Office Comparison Statistics 60 mins 1/3 of the time 3 hours Processing EDA 40 mins <1/6 of the time 4 hours Processing Tax Forms 3 hours <1/2 of the time 7 hours Declaration Posting 5 minutes 1/3 of the time 15 minutes Base Tax Report 50% faster - Response Time Data Entry 500 360 Avg Client Connections IDS 9.4 UC2 ODS 7.31 FC2 RDBMS Production Server Original Server Characteristic
  • Agenda
    • IBM Informix and LINUX
    • Performance & Scalability
    • Tips and Tricks !
    • Usage Trend
    • Strategy and Roadmap
    • Summary
  • LINUX Strategy
    • Overall IBM strategy and not just DM!
    • Support for enterprise versions of Redhat and SUSE
    • Other versions evaluated purely based on business needs
    • Support the 2.6 Kernel +
    • Support for newer glibc versions
    • GOAL: Certify on enterprise [Red Hat & SUSE] within 90 days of GA
  • Linux Intel x86 Support Planned Planned Online 5.2 Planned Planned SE Planned Planned C-ISAM 7.26 Planned
    • (UC2)
    Planned 4GL 7.32 Planned Planned Planned CSDK vNext
    • (UC3)
    CSDK 2.81 Planned Planned Planned IDS vNext Planned
    • (UC4)
    • (UC5)
    IDS 9.40 RHEL 4 RHEL 3 SUSE SLES 9 SUSE SLES 8 / UL 1.0 Product
  • Linux zSeries (64-Bit) Support Planned Planned Planned 4GL 7.32 Planned Planned Planned CSDK vNext CSDK 2.81 Planned Planned Planned IDS vNext Planned
    • (FC5)
    • (FC5)
    IDS 9.40 RHEL 4 RHEL 3 SUSE SLES 9 SUSE SLES 8 / UL 1.0 Product
  • Linux Itanium (64-Bit) Support Planned Planned Planned CSDK vNext
    • (FC3)
    CSDK 2.81 Planned Planned Planned IDS vNext Planned
    • (FC3)
    Planned IDS 9.40 RHEL 4 RHEL 3 SUSE SLES 9 SUSE SLES 8 / UL 1.0 Product
  • Linux pSeries/iSeries (64-Bit) Support Planned Planned Planned No 4GL 7.32 Planned Planned Planned No CSDK vNext Planned Planned Planned No IDS vNext RHEL 4 RHEL 3 SUSE SLES 9 SUSE SLES 8 / UL 1.0 Product
  • Linux AMD64 (32-Bit) Support Planned Planned Planned CSDK vNext Planned Planned Planned IDS vNext RHEL 4 RHEL 3 SUSE SLES 9 Product
  • Agenda
    • IBM Informix and LINUX
    • Performance & Scalability
    • Tips and Tricks !
    • Usage Trend
    • Strategy and Roadmap
    • Summary
  • Summary
    • IDS is continually evolving to exploit Linux features for best performance
    • Similarly, tuning practices are very portable across IDS platforms, but an understanding of Linux gives more opportunities
    • Linux is maturing as a platform for the enterprise
      • Consolidation of major distributions is occurring, but very vigorous open-source development continues
      • Tools to enable deployment are more available & robust
    • There are strong performance advantages to moving to a recent kernel
    • Adoption rates for IBM Informix on Linux increase
    • LINUX is unique … lets put it to work!
  • External Website for Informix Linux Information
    • www.ibm.com/informix/linux
  • Sneak peek at the new IDS vNext Installer Srini Bhagavan Architect, IBM Data Management
  • Agenda
    • The new Installer
    • What is changing?
    • How will it benefit me?
    • Installation options
    • Screen shots
  • IDS vNext Install Platform choice
    • Embedded requirement
    • Product integration with IBM offerings like IR, ISV product bundling advantages, etc.,
    • Autonomic Improvements
    • Uniform interface across all UNIX platforms
    • GUI based install capability
    • Permissions - entire installation is run as a single user instead of combination
    • Silent install capability
  • IDS vNext Install Platform choice
    • Uninstall capability
    • Helps achieve uniform installation across IBM product portfolio. Same look and feel for our customer base regardless of the product.
    • Helps us set the stage for a single install & deployment across DM at some point.
    • Enhanced error reporting - dynamic in many cases. Errors are reported up-front and prevents the need to deal with debris.
    • Minimizes critical manual steps required prior to installation
    • Usability enhancements
    • Experienced user support
  • Script Vs Java/ISMP Installer – A Comparison
    • Getting Started…
    • The product usually delivered as a tar ball, had components tar’d twice.
    • An user extracts it once, only to find another tar ball which has to be extracted again.
    • The ISMP based product is also a tar ball.
    • An user extracts it once, instead of getting another tar ball, ends up with a jar file not requiring an additional step of extraction.
  • Script Vs Java/ISMP Installer – A Comparison
    • Installing the Product…
    • The product is not provided in extracted form in the Media.
    • The user has to either copy or extract to a local file system to install the product.
    • Only TUI mode of installation was supported.
    • The installer has the capability to be started from the Media. No local extraction is required
    • The installer support GUI, TUI and Silent modes of installation
    • GUI: Graphical User Interface
    • TUI: Text User Interface (also referred to as console mode).
  • Script Vs Java/ISMP Installer – A Comparison
    • Product Requirements…
    • Lots of Disk Space was needed for performing various activities (to the tune of 1.5GB)
    • Some portion of installation has to be run as one user and another portion as root user.
    • Media size reduced anywhere from 30-50% making the product less Bulky
    • Start to finish only with one user id and all the steps required for the installation are taken care of
  • Script Vs Java/ISMP Installer – A Comparison
    • Audience – opening doors to Novice users…
    • A person with very less expertise doing product installation will have to understand the product structure to get started with installation.
    • User has to start all over again, if some problem happens during installation.
    • On a side note, licensing (SEL) was external and visible.
    • A person with very less expertise doing product installation can install the product
    • The Installer drives the user by getting the required information
    • Licensing is embedded into the product
  • Script Vs Java/ISMP Installer – A Comparison
    • Eliminate Manual Steps…
    • User had to define, environment variables based on their setup ($INFORMIXDIR, $ROLE_SEP etc.,)
    • Possible problems with file permission with extraction of source files.
    • The installer accepts information dynamically, eliminating the need for preset values in the environment
    • A single user based installation performs all the required tasks and the product is setup properly at the destination
  • vNext Installer Options
    • Current Installer can be invoked by the following methods
    • installserver [preferred] Uses bundled JVM, if JAVA not found in the PATH
    • Installserver –javahome [for users that want to use a local java]
    • Java –cp IIF.jar run [for users who want to invoke directly – advanced]
    • Installserver –legacy [extracts a legacy distribution]
  • Installer Options
    • Additionally on LINUX also package the following RPMs [since 9.40.UC5]
        • Product.rpm
        • GLS.rpm
        • Message.rpm
    • LINUX users have a choice to use this option and its details are documented in users guide
    • For enhanced usability, a wrapper script is provided that invokes the RPMs in the correct sequence
  • vNext Installer Screen Shots
  • Splash screen
  • GUI Welcome Screen
  • License Panel
  • Install Destination
  • Product choices – All or Specific components
  • GUI Role Separation
  • GUI Summary Panel
  • GUI Installation Progress
  • GUI Installation Complete
  • Console Screen shots
  • License Agreement
  • Console Product Uninstall
  • Key take aways
    • Java based Installer using ISMP
    • Eliminated all the critical manual steps
    • Simple to use compared to previous installer
    • GUI based Installer in addition to console mode
    • Silent install support
    • Uninstaller capability
    • Legacy install extraction option to support advanced users
  • http://www.ibm.com/software/data/informix
  •