New post

Find

Article
· Nov 9, 2023 3m read

How to determine your CPU’s microarchitecture family and instruction set

Introduction

InterSystems would like to optimize IRIS to take advantage of modern CPU instruction set extensions.  That’s great for product performance, but how do you know if your CPU will still be supported for new IRIS builds?  Here’s how to know your CPU’s microarchitecture family as well as how to find out your CPU’s specific instruction set extensions.

Finding your CPU’s microarchitecture family

 

Step 1 – Know your CPU model

The first step is to find out the specific CPU model for your IRIS server.  There are several ways to do this, depending on your operating system, but here’s how to get this info from IRIS itself.

In an IRIS terminal session, run do $system.CPU.Dump(). This will produce results like this:

              Architecture: x86_64

                       Model: Intel(R) Core(TM) i7-1068NG7 CPU @ 2.30GHz

                     Vendor: Intel

             # of threads: 8

                # of cores: 4

                # of chips: 1

 # of threads per core: 2

   # of cores per chip: 4

          MT supported: 1

            MT enabled: 1

                       MHz: 2300

 

The CPU model information we need is in the Model field above. 

 

Step 2 – Ask your favorite Generative AI engine for the microarchitecture family

 

The model number you found looks very different on different platforms and across generations of processors, but Generative AI does a reasonably good job of patching over the differences.

I’ve been using bing’s GTP-4 interface for generative AI recently.  Using that, I ask

    What microarchitecture family is a <Insert CPU Model Here>” CPU part of?

For example:

    What microarchitecture family is a “Intel(R) Core(TM) i7-1068NG7 CPU @ 2.30GHz” CPU part of?

Returns the following:

The Intel® Core™ i7-1068NG7 CPU @ 2.30GHz is part of the 10th Generation Intel® Core™ i7 Processors family, which is based on the Ice Lake microarchitecture.

 

You can verify this information from Intel or AMD, as appropriate.  This can sometimes take a little digging as there are often multiple marketing names used for the same microarchitecture family – for example AMD’s EPYC line of processors includes two sub-lines named as Milan and Rome.

 

What instruction set extensions does my CPU support?

Rather than looking up your CPU’s microarchitecture family and compare that to a list of supported CPU families, you might choose to check to make sure that your CPU has the specific extensions that are going to be required. 

 

Linux

On linux, open a shell and run the lscpu command.  The Flags section in the results contains the list of extensions your CPU supports.

 

MacOS

On a Mac, you can see supported extensions from the sysctl command.  Open a shell and run sysctl -a then look for the lines machdep.cpu.features and machdep.cpu.leaf7_features to see the extensions your CPU supports.

 

Windows

The coreinfo utility provides an easy-to-read list of your CPU’s instruction set extensions.

Discussion (0)1
Log in or sign up to continue
Article
· Nov 9, 2023 3m read

Connecting to Cloud SQL with DBeaver using SSL/TLS

With the release of InterSystems IRIS Cloud SQL, we're getting more frequent questions about how to establish secure connections over JDBC and other driver technologies. While we have nice summary and detailed documentation on the driver technologies themselves, our documentation does not go as far to describe individual client tools, such as our personal favourite DBeaver. In this article, we'll describe the steps to create a secure connection from DBeaver to your Cloud SQL deployment.

📺If you prefer popcorn over scrolling, check out this video in which we walk you through the steps captured below.

Step 0: Creating your deployment

First, log into the Cloud Services Portal and create a Cloud SQL deployment. The one thing you need to be mindful of is to check the box to enable external connections. Other than that, all the default settings should work fine.

Step 1: Installing the certificate

In order to connect securely, we'll use certificates to encrypt everything that gets sent over the wire. You can download the certificate from the deployment details page through the "Get X.509 certificate" button:

We then need to store this certificate in a trusted keystore using the keytool utility. This is a standard piece of Java infrastructure, so nothing specific to IRIS or DBeaver at this point. Use the command below to import the certificate. The location of your certificateSQLaaS.pem certificate file does not matter after running this command, so you can delete it from your downloads folder afterwards. The location of the keystore.jks file does matter, so make sure you run the command from a folder where it makes sense and is safe from uninstall or upgrade surprises, such as a cert directory in your user's home dir. The -alias is optional, but helpful when you intend to reuse the same keystore file to store multiple certificates.

keytool -importcert -file path-to-cert/cert-file.pem -keystore keystore.jks -alias myDeploymentName

For more details, see the documentation.

Step 2: Create an SSLConfig.properties file

Next, we'll need to tell the IRIS JDBC driver how to find this keystore, which is accomplished through an SSLConfig.properties file. This simple text file needs to be placed in the working directory of the Java program that'll open the JDBC connection. On Windows, that's %LOCALAPPDATA%\DBeaver, which translates to C:\Users\<you>\AppData\Local\DBeaver. On Mac, it's typically /Applications/DBeaverEE.app/Contents/MacOS. As an alternative, you can also create the file elsewhere and set the full path as an environment variable named com.intersystems.SSLConfigFile.

In its simplest form, this file only needs to point to the keystore and include the password. Note that the path to your keystore.jks file needs to be properly escaped for Java to read it, so on windows you'll need to use double backslashes.

trustStore=/path/to/keystore/keystore.jks
trustStorePassword=keystore-password

There are many additional settings you can configure through this file described in the docs, including named configurations, but the above is sufficient.

Step 3: Create your DBeaver connection

Now that we installed our certificate and specified where IRIS JDBC can find it, we can create our DBeaver connection. All of the settings for the "main" tab in the connection creation dialog can be found in the deployment details screen as pasted above:

The only thing left to do is to tell DBeaver to enable encryption, which is accomplished by setting the "connection security level" to 10 in the "Driver properties" tab:

That's it! If you click "Test Connection", you should get a thumbs up, or a useful error message. In the latter case, check out this troubleshooting document if it's not obvious what to change.

Note for Mac users

If you're using a mac there seems to be a bug in DBeaver where the above may not be sufficient. The work around is unconventional but it does work. In the Database/Schema field, where you'd normally put 'USER' put this full string instead:

USER:sslConnection=true;sslTrustStoreLocation=/pathToTruststore/truststore.jks;sslTrustStorePassword=123456;

Tip and misc other wisdom courtesy of @Rick Guidice 

21 Comments
Discussion (21)5
Log in or sign up to continue
Question
· Nov 7, 2023

Creation of namespace and database using CLI

Hello everyone,

I am attempting to implement continuous integration using Docker with Caché 2018.1, and I am in the process of creating an image for our client. I have already installed Caché 2018.1 on the RedHat server, but I am working on a script to create the database and namespace. For the database, I used the following code:

do ##class(SYS.Database).CreateDatabase("/usr/cachepoc/cache2018/mgr/poc/")

However, I have encountered some issues with this code. For instance, I am unable to view this local database in the portal's list:

In the end, I have tried various approaches to create the namespace programmatically, but I haven't been able to resolve this issue.

Could someone please assist me in finding the correct command to create a namespace and explain why we are unable to see the database that was created in the portal's list?

I am aware that we already have some images with InterSystems IRIS, but the client is not ready to update the database at this time.

4 Comments
Discussion (4)2
Log in or sign up to continue
Question
· Nov 6, 2023

CSP issue with only one instance on a new machine

We have a machine that serves 4 instances of Cache on VMS systems, one of them is password protected and works fine as they all do. we decided we wanted something beefier and copied it to a server, well all but the one you have to login to works so 3 of the 4 do.  and the odd part is I can no longer get to the management page from anywhere on any machine, http://localhost/csp/bin/Systems/Module.cxw  I get a 404.8 error, I have tried adjusting security and same thing. and a server availability error.

I think it something on the new machine/server that is missing but why only 1 of the 4.  oh and we tried to turn off the authentication required with no success.

 

thanks

Paul

5 Comments
Discussion (5)0
Log in or sign up to continue
Discussion (2)2
Log in or sign up to continue