Nouvelle publication

Rechercher

Article
· Mai 13 2m de lecture

Contenedor de IRIS con una huella mínima

A veces, los clientes necesitan una instancia pequeña de IRIS para hacer algo en la nube y luego apagarla, o necesitan cientos de contenedores (es decir, uno por usuario final o uno por interfaz) con cargas de trabajo pequeñas. Este ejercicio surgió para ver cuán pequeña podría ser una instancia de IRIS. Para este ejercicio, nos centramos en cuál es la menor cantidad de memoria que podemos configurar para una instancia de IRIS. ¿Conocéis todos los parámetros que afectan la memoria asignada por IRIS?

Configuración de memoria

Estos son los distintos bloques que afectan la asignación de memoria por parte de IRIS y sus parámetros correspondientes:

  • Buffers globales (32 MB) => El mínimo parece ser 32 MB para bases de datos de 8k
  • Buffers de rutinas (26 MB) => El mínimo teórico según la documentación es 430 buffers x 64k por buffer, lo que equivale a aproximadamente 26 MB, y en la práctica también es 26 MB
  • Buffers de journaling (16 MB) => En teoría y en la práctica, el mínimo para un sistema Unicode es 16 MB (8 MB para sistemas de 8 bits)
  • Descriptores de buffer (3 MB) => Parece ser de 3 MB, no se puede ajustar
  • gmheap (16 MB) => El mínimo es 256 páginas x 64k por página = 16 MB (configurado en bytes en el CPF = 16384)
  • ECP (1 MB) => Hay un par de parámetros en el CPF que controlan esto: MaxServerConn y MaxServers. Incluso con MaxServerConn=0 y MaxServers=0, el mínimo sigue siendo 1 MB porque IRIS asigna memoria a esas estructuras independientemente de si usas ECP o no. Con MaxServerConn=1 y MaxServers=2, el valor predeterminado es 5 MB
  • Varios (15 MB) => Según mis pruebas, el mínimo parece ser 15 MB. No pude reducirlo más.

Con todos estos ajustes configurados de esta manera, los parámetros del CPF se verían de la siguiente forma:

globals=0,0,32,0,0,0
routines=0,0,0,0,0,26
jrnbufs=16
gmheap=16384
MaxServerConn=0
MaxServers=0

Entonces, si configuras IRIS con estos parámetros (yo usé IRIS 2024.1) en el archivo CPF, se puede esperar que el total mínimo de memoria asignada por IRIS al iniciar (excluyendo los procesos de usuario) sea de 111 MB. Podéis ver la memoria asignada por IRIS en el archivo messages.log.

 

 

Bueno, lo sé, debe haber algún redondeo involucrado porque si sumas todos los valores individuales obtienes 109 MB, pero en el archivo messages.log se informa como 111 MB.

Durante este proceso, también descubrimos que los contenedores de IRIS no podían asignar páginas grandes (Huge Pages), lo cual fue reportado y corregido en versiones posteriores por InterSystems.

Por cierto, este artículo también puede servir como una guía general para aprender sobre los diferentes parámetros de memoria que se pueden ajustar dentro de IRIS para obtener un mejor rendimiento.

¡Espero que os haya gustado!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Mai 13 2m de lecture

Using %System.Monitor.LineByLine together with %SYS.MONLBL to analyze your code

I'm sure most of you are familiar with utility %SYS.MONLBL that is crucial when analysing code performance bottlenecks. It allows you to select a number of routines that you want to monitor at runtime and also specify what process(es) you want to watch. BUT, what if you do not know exactly, what process would execute your code? This is true with many web based (CSP/REST) applications today. You want to minimize the resource utilization on your production system that needs analysis. So, how about doing a small tweak?

1. Define an INC file with these macros:

#define START(%level) try { ##continue 
s zzroutine=$p($view(-1,-3),"^",6) ##continue 
if ##class(%Monitor.System.LineByLine).IsActive(zzroutine)=0 { ##continue $$$ThrowOnError(##class(%Monitor.System.LineByLine).Start($lfs(zzroutine),$lfs(##class(%Monitor.System.LineByLine).GetMetrics(%level)),$lb($job))) ##continue } ##continue 
h 1 ##continue 
} catch (e) { ##continue
 d BACK^%ETN ##continue 
} 

#define PAUSE s sc=##class(%Monitor.System.LineByLine).Pause()

2. in your class, or routine, identify a place you want to monitor and put these two macros to start collecting data and pausing collection, like in this example:

$$$START(2)   // use 1 or 2 here

// code of your application here

$$$PAUSE

Whenever you run this code (method of a class or routine) this would try to start %SYS.MONLBL for this particular class or routine and process.

Once your code is finished, you can simply go to terminal in the namespace where your application runs and call d ^%SYS.MONLBL. As START macro started monitor, it is still running and you can easily collect your performance data, optionally together with source code. Do not forget to stop monitor, once you have collected your data!

If you need to collect data for more routines, you can easily modify  the START macro to allow for manual entry of routines list to analyze.

Hope you find this little tweak useful!

2 Comments
Discussion (2)2
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Mai 13

FHIR France Meetup #13

Hello Community!

We're excited to announce that the FHIR France Meetup is making a comeback... in person at SantExpo 2025!

📅 Dates: May 21, 2025, starting at 7:00 PM

📌 Location: Halles d'Issy - Biltoki, 1 Rue Rouget de Lisle, Issy-les-Moulineaux, Paris, France

Meetup FHIR France #13 : PARIS

Program:

  • 7:00 p.m.: Welcome of participants
  • 7:30 p.m. – 9:00 p.m.: Presentations and discussions:
    • "How do the FHIR APIs of the ANS Multi-Terminology Server (SMT) help manage Europe's terminological artifacts?" by Abdelali BOUSSADI and Yohann POIRON (Agence du Numérique en Santé)
    • "The Advantages and Benefits of the Toulouse University Hospital's FHIR Platform: From Frameworks to Architecture" by Paul ORTEGA and Christian COUDER (CHU de Toulouse)
    • "Intelligent Querying with FHIR – OWL – LLM" by @Yann de Cambourg (Synodis), Guillaume POULERIGUEN (ftprod), Vincent HENRY (Jarod Knowledge Science)
    • "Predicting and Preventing Life-Saving Emergencies with HL7 FHIR" by Quentin FRANCOIS (PREVIA MEDICAL)
  • after 9:00 p.m.: Cocktail and Networking

Registration

The event is free, but places are limited. Please register via the official Meetup page:

👉 Register here 👈

This meetup is an excellent opportunity to discover concrete FHIR use cases, connect with experts, and strengthen the French-speaking community around healthcare interoperability.

We hope to see you there!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Mai 13

Fourth Spanish Technical Article Contest – Prizes for Everyone!

Hello Community!

The big challenge you've all been waiting for is finally here: The fourth InterSystems technical article writing contest in Spanish is here!

🏆 4th Spanish Technical Article Contest 🏆

Contest description: Write an article in Spanish in the Developer Community on any topic related to InterSystems technology.

Duration: May 12 – June 8, 2025.

Prizes for all participants: Everyone who publishes an article in Spanish during the contest period will receive a prize.

Main prize: Apple Watch SE / 10th generation iPad

 

Take part in the contest and share your knowledge with hundreds of users! It’s one of the best opportunities to publish that trick, discovery, or potential you see in InterSystems technology (Newcomers are very welcome in these contests!)

Prizes

  1. Everyone wins in the InterSystems technical article contest → Any Community member who participates in the contest will receive a gift from InterSystems for taking part.
  2. Expert Awards – The winning articles in this category will be selected by InterSystems experts, and for each position, the winner may choose one of the following:

🥇 1st place: Apple Watch SE or 10th generation iPad
🥈 2nd place: Insta360 Link 2 or Nintendo Switch Lite
🥉 3rd place: Samsonite backpack

Alternatively, any winner may choose a prize from a lower category.

Note: Prizes are subject to change if availability in the country prevents delivery.

  1. Developer Community Award – Article with the most "Likes". The winner will receive:

🎁 Samsonite Backpack

Note: Each author can only win one prize per category (in total, an author can win two prizes: one in the Experts category and one in the Community category).

Who can participate?
Anyone registered in the Developer Community, except InterSystems employees. Register here in the Community if you don't have an account yet.

Contest Duration
📝  May 12 to June 8: Article submission period.

📝 June 9 to June 15: Voting phase.

Publish your article(s) during this period. Members of the Developer Community can vote for the articles they like by clicking "Like" under each article.

Tip: The earlier you publish your article(s), the more time you'll have to get votes from both the Experts and the Community.

🎉 Once the voting is complete, we will announce the winners in the Developer Community.

Requirements
❗️ Any article written during the contest period that meets the following requirements will automatically be entered into the competition ❗️:

  • The article must be directly or indirectly related to InterSystems technology (specific features of InterSystems products or complementary tools, architectural solutions, development best practices, etc.).
  • The article must be written in Spanish.
  • The article must be 100% new (it can be a continuation of a previously published article).
  • The article cannot be a copy or translation of another article already published in the Developer Community in Spanish or in another Community.
  • Article length: >1,000 characters (links do not count toward the character count).
  • Participation mode: individual (a participant may publish multiple articles).

What can you write about?
You can choose any technical topic directly or indirectly related to InterSystems technology.

🎯 BONUS:

Experts award 9 points to the article they consider the best, 6 points to the second-best, and 3 points to the third-best. Additionally, articles can receive more points based on the following bonuses:

Note: the judges' decision is final.

  1. New author bonus: If this is your first time participating in the Spanish Technical Article Contest, your article will receive 4 extra points from the Experts.
  2. Topic bonus: If your article falls under the following topics, it will receive 3 extra points:

✔️ Use of ODBC and JDBC
✔️ Use of DB-API
✔️ Use of Dynamic SQL and Embedded SQL
✔️ Generation of OpenAPI Documentation
✔️ Authentication-related Endpoints (use of SSO, OAuth, and ZAuth)
✔️ Use of isc.rest for API development
✔️ Embedded Python in Interoperability (Operations, Services, Custom Functions)
✔️ Common IKO deployments
✔️ Adapting existing C#, Java, and Python code to IRIS and IRIS interoperability via external language gateways
✔️ GenAI, Vector Search, RAG
✔️ FHIR, EHR, OMOP
✔️ Data Fabric, Data Lake, Data Warehouse, Data Mesh
✔️ Sharding, Mirroring

  1. Video bonus: If the article is accompanied by an explanatory video, the participant will receive 2 points. Here are some tips in case you're unsure how to approach this.
  2. Tutorial bonus: You will receive 3 points if the article has tutorial characteristics, with step-by-step instructions that a developer can follow to complete one or more specific tasks.

Do you have any questions? Feel free to write to me!

We're really looking forward to your articles!

And as we always say... Ready, set, code! 🔥

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Question
· Mai 13

Problème lors d'un déploiement sur un espace de nom

Bonjour,

J'ai rencontré un problème lors du déploiement. Quand je déploie en utilisant la classe Ens.Deployment.Deploy, je ne reçois plus les logs dans le terminal. Cependant, le déploiement s'est bien passé, je le vois dans l'historique sur le portail.

Cela fonctionne sur notre environnement mais pas sur celui du client.

 

Set tSC = ##class(Ens.Deployment.Deploy).DeployCode(chemin_"GESL_SVCCLI_DEPLOY_CPT-243_V4_0.xml","SVCCLI.ProdClient",1,chemin_"GESL_SVCCLI_DEPLOY_CPT-243_V4_0_rb.xml","L",chemin_"GESL_SVCCLI_DEPLOY_CPT-243_V4_0.log",1,1)

 

Merci 🙂

3 Comments
Discussion (3)2
Connectez-vous ou inscrivez-vous pour continuer